[toc]
sed命令
1.sed命令工作流程
1.输入流
- sed 从标准输入(如管道或文件)读取文本行。你可以将文件名作为参数 传递给 sed,或者通过管道将输出传递给 sed。
2.模式匹配
- 对每一行输入,sed 将根据提供的模式(通常是正则表达式)进行匹配。模式可以指定哪些行或文本需要进行处理。
3.操作
- 根据匹配结果,sed 执行相应的操作。常见的操作包括:
- 替换(s/pattern/replacement/):用替换字符串替换匹配的模式。
- 删除(d):删除匹配的行。
- 插入(i)或 追加(a):在匹配行之前或之后插入文本。
- 打印(p):打印匹配的行。
4.输出:
- 处理完所有输入行后,sed 将结果输出到标准输出。
- 默认情况下,它会输出所有未被删除的行。如果使用了
-n
选项,则只输出被打印操作处理过的行。 - 默认情况下,sed将修改的行输出到屏幕,并没有修改源文件,使用
-i
选项修改源文件
- 默认情况下,它会输出所有未被删除的行。如果使用了
2.命令格式
sed 选项 地址1,地址2 命令 标记 文件名
3.选项
3.1 -n
拟制输出,不输出未修改的行,强制输出用命令 p
创建示例文件
cat > test.txt << EOF
line 1
line 2
line 3
EOF
这里,/line 2/p
表示匹配包含 line 2
的行,并打印它。由于使用了 -n
选项,只有匹配的行被打印,其他行不会自动输出
$ sed -n '/line 2/p' test.txt
line 2
$ sed '/line 2/p' test.txt
line 1
line 2
line 2
line 3
3.2 -i
修改源文件,需要备份源文件 -i.bak
即可
不加 -i
不修改源文件
$ sed 's/line/abc/' test.txt
abc 1
abc 2
abc 3
$ cat test.txt
line 1
line 2
line 3
加 -i
修改源文件
$ sed -i 's/line/abc/' test.txt
$ cat test.txt
abc 1
abc 2
abc 3