Linux命令工具-sed-基础用法

1.简介#

一个非交互式、面向文本流的编辑器,能对文本进行匹配、过滤和转换

2.命令格式#

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

3.示例#

1
# cat data.txt
1
2
unix macos macos unix unix unix windows windows unix unix
unix unix unix unix unix unix unix unix unix unix

以上是文件原始内容


1
# sed 's/unix/linux/g' data.txt

该命令作用是使用指令s(格式为:s/pattern/replacement/flags)匹配每行的unix,将其替换为linux,g表示对每行的所有匹配进行替换,输出如下:

1
2
linux macos macos linux linux linux windows windows linux linux
linux linux linux linux linux linux linux linux linux linux

上一个例子的操作不会影响到原文件,只是默认进行打印输出

1
# sed -i 's/unix/linux/g' data.txt

该命令添加了-i选项,表示直接对原文件进行操作

1
# sed -i.bak 's/unix/linux/g' data.txt

该命令添加了-i并且紧跟.bak(可以是其他任意字符串作为后缀比如temp、-save等),这会使得产生一个相应名字的备份文件,并对源文件进行操作

1
# ls -l
1
2
data.txt
data.txt.bak

1
# cat data.txt
1
2
unix macos macos unix unix unix windows windows unix unix
unix unix unix unix unix unix unix unix unix unix
1
# sed '/macos/p' data.txt
1
2
3
unix macos macos unix unix unix windows windows unix unix
unix macos macos unix unix unix windows windows unix unix
unix unix unix unix unix unix unix unix unix unix

该命令会将存在匹配(macos)的行进行打印(p)
这里输出了3行,第1行是原始第1行,第2行是由于第1行的匹配进行的打印输出,第3行为原始第3行
可以指定-n选项抑制原始行数据的打印,如下:

1
# sed -n '/macos/p' data.txt
1
unix macos macos unix unix unix windows windows unix unix

1
# cat data.txt
1
2
unix macos macos unix unix unix windows windows unix unix
unix unix unix unix unix unix unix unix unix unix
1
# sed '2d' data.txt

该命令将指定的第2行进行删除操作,输入如下:

1
unix macos macos unix unix unix windows windows unix unix

4.资料#