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