Linux系统sed命令常用参数实战
Linux系统sed命令常用参数实战
常用参数
- -n 输出第n行的文本内容,通常与p联合使用,
- -e 命令行模式下进行sed的动作编辑,输出编辑后的内容,源文件不会发生变化
- -f 以命令中指定的script文件来处理输入的文本文件
- -i 直接编辑源文件
常用动作参数
- a 行后追加行
- c 替换
- d 删除
- i 行前插入行
- p 打印
- s 查找并替换
插入操作
- 行前插入
[root@localhost data1]# sed -i -e '2itest' test.txt
- 行后插入
[root@localhost data1]# sed -i -e '2atest' test.txt
- 尾行插入
[root@localhost data1]# sed -i -e '$a123' test.txt
- 插入多行
\n
表示换行,\t
表示一个制表位
[root@localhost data1]# sed -i -e '2i123\n123\t123' test.txt
- 插入的字符中存在
\n
或\t
时,需要转义
[root@localhost data1]# sed -i -e '2i123\\n123\\t123' test.txt
删除操作
- 删除第2行
[root@localhost data1]# sed -i -e '2d' test.txt
- 删除尾行
[root@localhost data1]# sed -i -e '$d' test.txt
- 删除第2行及第4行
[root@localhost data1]# sed -i -e '2d;4d' test.txt
- 删除第2行至第4行
[root@localhost data1]# sed -i -e '2,4d' test.txt
修改操作
- 将第1行的内容替换为1
[root@localhost data1]# sed -i -e '1c1' test.txt
- 将尾行内容替换为end
[root@localhost data1]# sed -i -e '$cend' test.txt
- 将第一行至第三行的内容替换为3
[root@localhost data1]# sed -i -e '1,3c3' test.txt
思考:有没有替换第一行和第三行的内容为某个值?
网上百度了好久,没有得到有用的结果,静下心来思考了下替换的实现逻辑,由上面的结果得知(将第一行至第三行的内容替换为3),是将所指定的行删除后再新增了一行内容,那么删除第1行和第3行后新增的内容是放在第几行呢?放在第1行或者第3行都感觉不太对,因此本人觉得应该没有替换第一行和第三行的内容为某个值
的sed写法,个人见解,如有错误勿喷,请留言交流,非常感谢!!!
查询操作
- 查看第一行内容
sed -n -e '1p' test.txt
- 查看第1行及第3行内容
[root@localhost data1]# sed -n -e '1p;3p' test.txt
- 查看第1行至第3行内容
[root@localhost data1]# sed -n -e '1,3p' test.txt
- 查看尾行
[root@localhost data1]# sed -n -e '$p' test.txt