grep 新增参数
grep -l(小写字母L) grep过滤的时候只显示文件名,不显示文件内容
grep -c 统计包含XXX的一共多少行
[root@oldboy59 ~/oldboy]# grep -c 'oldboy' oldboy.txt
4
grep -R 递归的进行过滤
[root@oldboy59 /oldboy]# grep -Rl 'oldboy' /etc/ /tmp/
/etc/group
/etc/gshadow
/etc/passwd
/etc/shadow
/etc/hostname
grep -A 显示grep找出的内容及接下来的几行
grep -B 前几行
grep -C 上面几行后面几行
[root@oldboy59 ~/oldboy]# grep -A 2 'linux' oldboy.txt
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
sed stream editor 流编辑器 每个文件像一个源源不断的水流(一行接一行)
参数:
-n 取消默认输出
-i 修改文件内容
-i.bak 先备份文件为oldboy.txt .bak 然后修改文件内容
sed 命令执行过程
https://www.processon.com/view/link/5bea32c5e4b0ad314e894f53
功能:
1.查p (print)
根据行号进行查找
[root@oldboy59 /oldboy]# sed -n '5p' lidao.txt
105,feixue,CIO
行号范围 查找1到5行
[root@oldboy59 /oldboy]# sed -n '1,5p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
使用正则进行过滤 查找有a-z的行
[root@oldboy59 /oldboy]# sed -n '/[a-z]/p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
找出文件中包含oldboy或yy的行
[root@oldboy59 /oldboy]# sed -nr '/oldboy|yy/p' lidao.txt
101,oldboy,CEO
104,yy,CFO
使用正则表示范围,从哪行到哪行
[root@oldboy59 /oldboy]# sed -n '/102/,/105/p' lidao.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
2.增加
a append 追加,在你指定的行后面追加内容
在3行后面加上119,小红,UFO
[root@oldboyedu59 /oldboy]# sed '3a119,xiaohong,UFO' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
102,zhangyao,CTO
119,xiaohong,UFO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
105,feixue,CIO
110,lidao,COCO
i insert 插入 在你指定的行上面插入信息
c replace 把这一行的内容先清空 然后写入
3.删除 d delete
删除空行
[root@oldboy59 ~/oldboy]# sed '/^$/d' oldboy.txt
am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
不显示空行
[root@oldboy59 ~/oldboy]# sed -n '/^$/!p' oldboy.txt
am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
删除 /oldboy/oldboy.txt中的空行
![](https://img.haomeiwen.com/i16955051/b2f2dfaa6d04573e.png)
sed命令格式和功能-2019-v2
https://www.processon.com/view/link/5cb7ede9e4b01941c8b13036
4.修改 s sub 格式s#目标#替换为什么#g s替换 g全局替换 sed命令默认替换每一行第一个内容(第一个匹配到的)如果有g则进行全局替换,替换每一行中匹配到的内容
[root@oldboy59 ~/oldboy]# sed 's#oldboy#alex#g' oldboy.txt
am alex teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://alex.blog.51cto.com
our size is http://blog.alexedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
后向引用
在前面(##)把你要的内容保护起来,在后两个##之间通过\数字来引用
把123456修改为<123456>
[root@oldboy59 ~/oldboy]# echo 123456 |sed -r 's#(.*)#<\1>#g'
<123456>
不显示文件/etc/ssh/sshd_config 的空行或以#号开头的行
![](https://img.haomeiwen.com/i16955051/ef32b0c5beb0357e.png)
![](https://img.haomeiwen.com/i16955051/ecc98a4440d08d41.png)
网友评论