sed简介
sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。和awk相同,sed也是逐行对文件进行处理。
sed命令格式和常用参数
格式如下:sed [-efni] 'command' test.txt
-e | 指定多个处理命令,每个命令之前都用-e参数 |
-f | 指定一个存放了sed命令的文件,执行该文件中的命令 |
-n | 取消默认的控制台输出 |
-i | 将更改保存到源文件,也就是修改源文件 |
a | 在指定的行后插入新的数据,输出到命令行(不对源文件进行修改,除非指定-i) |
c | 替换指定行的数据,输出到命令行(不对源文件进行修改,除非指定-i) |
d | 删除指定行的数据,输出到命令行(不对源文件进行修改,除非指定-i) |
i | 在指定行前插入新的数据,输出到命令行(不对源文件进行修改,除非指定-i) |
p | 打印指定行的数据,和-n参数一起使用 |
s | 替换匹配到的每一行的数据为指定数据 |
测试用例:
1、在a.txt的第二行后面插入hahaha字符:sed '2a hahaha' a.txt
2、在a.txt的第二行前面插入hahaha字符:sed '2i hahaha' a.txt
3、将a.txt的第二行的数据替换成hahaha:sed '2c hahaha' a.txt
4、将a.txt的指定行删除:sed '2d ' a.txt
4、打印a.txt第5行的数据:sed -n '5p' a.txt
注意这里使用了-n参数取消默认打印所有行,只打印指定行
5、将a.txt中所有wait替换成waitfor:sed 's/wait/waitfor/' a.txt
6、指定多个处理命令:sed -e 's/wait/waitfor/' -e '2d' a.txt
7、对源文件进行修改:sed -i '2d' a.txt
总结
这里只对sed常用参数做一个简单的举例,其实sed命令的强大并不止这些,在对大型文件的增删改查中能起到很大的作用,不过这就需要根据实际场景去设计sed的用法了。