sed命令是一种对文本过滤和转换的脚本编辑器,如下为官方解释。
sed - stream editor for filtering and transforming text
目录
语法介绍
sed [-hnV] -e[命令] -f[命令文件] [处理对象]
-h help,帮助
-n quiet,仅显示命令处理后的结果,不展示中间过程
-V version,版本信息
-e expression,需要执行的命令
-f file,需要执行的命令文件
命令介绍
a 追加数据
i 插入数据
d 删除数据
c 取代整行数据
s 取代匹配的数据
p 打印操作,通常和-n配合使用
增删改查
原始数据如下: test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----
在文件某行之后增加数据, sed -e '4a new line' test_file.txt
sed -e '4a new line' test_file.txt
结果如下:
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
new line
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----
在文件某行之前增加数据,sed -e '4i new line' test_file.txt
sed -e '4i new line' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
new line
aaaaaaaaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----
删除文件中某一行,sed -e '4d' test_file.txt
sed -e '4d' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----
删除文件中特定的几行,sed -e '4,7d' test_file.txt
sed -e '4,7d' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
---- file end ----
删除到文件末尾,sed -e '4,$d' test_file.txt
sed -e '4,$d' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
将文件的第三行进行替换,sed -e '4c new line' test_file.txt
sed -e '4c new line' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
new line
ddddddddddd
---- file end ----
将文件中特定的几行进行替换,sed -e '4,6c new line' test_file.txt
sed -e '4,6c new line' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
new line
ddddddddddd
---- file end ----
打印某几行,sed -n '1,3p' test_file.txt
sed -n '1,3p' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
打印匹配特定文本的行,sed -n '/aaa/p' test_file.txt
sed -n '/aaa/p' test_file.txt
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
删除匹配特定文本的行,sed -e '/aaa/d' test_file.txt
sed -e '/aaa/d' test_file.txt
---- file start ----
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----
搜索文本,并且进行替换,sed -e 's/aaaaaaa/ddd/g' test_file.txt
sed -e 's/aaaaaaa/ddd/g' test_file.txt
---- file start ----
dddaaa
dddaaa
dddaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----
多点编辑
对文件进行两次替换,sed -e 's/aaaaaaa/ddd/g' -e 's/dddaaa/hello/g' test_file.txt
sed -e 's/aaaaaaa/ddd/g' -e 's/dddaaa/hello/g' test_file.txt
---- file start ----
hello
hello
hello
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----
直接编辑文件
对文件进行变量替换,并且写入文件,sed -i 's/aaaaaaa/ddd/g' test_file.txt
sed -i 's/aaaaaaa/ddd/g' test_file.txt
cat test_file.txt
---- file start ----
dddaaa
dddaaa
dddaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----