sed
命令, stream editor 流式编辑器
用于对文本的查找 / 替换 / 删除 / 新增
用法: sed [options]... <command> <file>
默认 sed
使用 p
打印文本文件时, 会打印所有内容
-n
表示只输出匹配的行, 一般 -n
和 p
组合使用, 表示只打印匹配行
# 默认会输出所有行
sed '3p' book.txt
# 使用 -n 只打印匹配行
# 打印第 3 行
sed -n '3p' book.txt
i
表示在匹配行前面插入一行
# -i 表示直接修改原文件
sed -i '4i 你好鸭' dog.txt
a
表示在匹配行后面追加一行
# -i 表示直接修改原文件
sed -i '4a 你好鸭2' dog.txt
d
表示删除匹配行
# -i 表示直接修改原文件
sed -i '4,5d' dog.txt
s
表示搜索字符串, 替换为指定内容
这个比较常用
# sed s/old_str/new_str/pg dog.txt
# 把 44444 替换为 55555
# 其中 s 表示搜索字符串
# g 表示替换所有 (默认是只替换一次)
# 输出到屏幕, 不修改原文件
sed -n s/44444/55555/pg dog.txt
# 当确保无误后, 再实际修改原文件, 修改前记得 cp 备份一下原文件
sed -i s/44444/55555/g dog.txt
# -r 表示正则表达式, 可以使用 \1 这种向前引用
# 所有数字开头的行, 数字都替换为 原数字@@ 的格式
sed -nr 's/(^[0-9]+)/\1@@/pg' dog.txt
总结:
使用 sed
一般用于对文件进行查找替换关键字
先使用 -n
搭配 p
的参数, 预览替换结果
在使用 -i
实际替换文件, 操作前记得备份原文件
# 预览替换结果
sed -n 's/我/你/pg' dog.txt
# 实际替换
sed -i 's/你/我/g' dog.txt