Linux59期day17

2019-04-18  本文已影响0人  A宽宽

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中的空行

sed和grep都可以实现

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 的空行或以#号开头的行

sed和grep实现
awk
上一篇 下一篇

猜你喜欢

热点阅读