Linux三剑客---sed命令
三剑客的功能
grep 过滤
sed 增删改查 过滤,替换(修改)取行
awk 过滤,取列,统计计算
grep参数补充
参数-l grep过滤的时候只显示文件名,不显示文件内容
参数-R递归式进行过滤
参数-A显示grep找出的内容,及接下来的几行
参数-B显示grep找出的内容,及以上的几行
参数-C相当于-A -B -C2=-A2 -B2
参数-c统计包含内容的行数
sed steam editor 流编辑器
参数-n不显示默认输出(sed命令查找默认会把文件所有内容输出到屏幕)
参数-i修改文件内容(加参数-i才真正修改文件内容)
-i.bak先备份文件,在修改文件内容
参数-r可以支持扩展正则
查找 p print 查看 一般与-n一起使用
根据行号进行查找
sed -n ‘5p’ 文件名 查找第5行
sed -n ‘5!p’ 文件名 不显示第5换行
多行查找
sed -n ‘1,5p’ 文件名 查找第1到5行的内容
使用正则查找
sed -n ‘/要查找的内容/p’ 文件名
使用正则范围查找
sed -n ‘/开始查找的范围/,/结束查找的范围/p’ 文件名
[root@oldboyedu59 /oldboy]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed -n '5p' lidao.txt
104,yy,CFO
[root@oldboyedu59 /oldboy]# sed -n '5!p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed -n '1,5p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
[root@oldboyedu59 /oldboy]# sed -nr '/oldboy/p' lidao.txt
101,oldboy,CEO
[root@oldboyedu59 /oldboy]# sed -nr '/oldboy/,/Alex/p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
增加 a append 追加
sed ‘3a要插入的信息’ 文件名 在第三行的下面追加1行
i insert 插入
sed ‘3i要插入的信息’ 文件名 在第三行的上面插入1行
c replace
sed ‘3c要插入的信息’ 文件名 先清空第3行的内容,然后在写入
[root@oldboyedu59 /oldboy]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3aoldboy' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
oldboy
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3ioldboy' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
oldboy
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3coldboy' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
oldboy
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
删除 d delete 删除
sed ‘3d’ 文件名 删除文件的第3行内容
[root@oldboyedu59 /oldboy]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
12306,nidaye,hh
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboyedu59 /oldboy]# sed '3d' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
修改 s 简写sub
sed ‘s###g’ 文件名 全局替换
s 替换 g global全局
sed默认替换每一行的第一个内容(匹配到的第一个内容),如果有g则进行全局替换,替换每一行中匹配到的内容
在前面(##)之间的内容,通过()小括号保护起来(整合成一个整体),
在后面(##)之间通过(\数字)来使用(第几个小括号,数字就是几)
echo 123456|sed -r 's#(.*)#<\1>#g'
<123456>