美文网首页
2019-04-08 Day27 李导的三剑客之grep、s

2019-04-08 Day27 李导的三剑客之grep、s

作者: Ffvc | 来源:发表于2019-04-08 20:52 被阅读0次

三剑客深入:

grep 过滤
参数:
-E 支持扩展正则====egrep

-o 只显示匹配的内容 显示grep执行过程

-v 取反

-I 不区分大小写 ignore case find /oldboy -type f -iname “*.txt”

-n 显示行号 cat -n

-w 按照单词进行匹配

-A 9 after 显示grep找出的行及接下来的 9行

-B 9 before

-C 9 上下各9行

-P ??

-r 递归过滤,在目录下所有层进行过滤

-l (小写字母L)

练习题:

1、 Unix中在当前目录下所有.cc 的文件中找到含有“asiainfo”内容的文件,命令为_______

find ./ -type f -name “*.cc”|xargs grep ‘asiainfo’ 找出这个目录下面所有层的内容

grep ‘asiainfo’ ./*.cc 只用grep只默认显示第一层

find命令可以找出这个目录下面所有层的内容 [root@oldboyedu ~]# find /oldboy/ -type f -name "*.cc" |xargs grep 'oldboy'

/oldboy/alex/1.cc:oldboy 127.0.0.1
/oldboy/alex/2.cc:oldboy 127.0.0.1
/oldboy/alex/3.cc:oldboy 127.0.0.1
/oldboy/alex/4.cc:oldboy 127.0.0.1
/oldboy/alex/5.cc:oldboy 127.0.0.1
/oldboy/1.cc:oldboy 127.0.0.1
/oldboy/2.cc:oldboy 127.0.0.1
/oldboy/3.cc:oldboy 127.0.0.1
/oldboy/4.cc:oldboy 127.0.0.1
/oldboy/5.cc:oldboy 127.0.0.1

只用grep只能默认显示第1层 [root@oldboyedu ~]# grep 'oldboy' /oldboy/*.cc

/oldboy/1.cc:oldboy 127.0.0.1
/oldboy/2.cc:oldboy 127.0.0.1
/oldboy/3.cc:oldboy 127.0.0.1
/oldboy/4.cc:oldboy 127.0.0.1
/oldboy/5.cc:oldboy 127.0.0.1

[root@oldboyedu ~]# grep -r 'oldboy' /oldboy/
/oldboy/test.sh:echo oldboy
/oldboy/alex/1.cc:oldboy 127.0.0.1
/oldboy/alex/2.cc:oldboy 127.0.0.1
/oldboy/alex/3.cc:oldboy 127.0.0.1
/oldboy/alex/4.cc:oldboy 127.0.0.1
/oldboy/alex/5.cc:oldboy 127.0.0.1
/oldboy/1.cc:oldboy 127.0.0.1
/oldboy/2.cc:oldboy 127.0.0.1
/oldboy/3.cc:oldboy 127.0.0.1
/oldboy/4.cc:oldboy 127.0.0.1
/oldboy/5.cc:oldboy 127.0.0.1

2、找出当前目录下包含127.0.0.1关键字的文件?

  grep -r ‘127.0.0.1’ .

3、写出查询file.txt以abc结尾的行

  grep ‘adb$’ file.txt

4、写出删除abc.txt文件中的空行

 egrep -v “^$|^ $” abc.txt

 cat -A 行首显示$。

基础

[root@oldboyedu /oldboy]# grep -v '^$' /oldboy/blank.txt

oldboy oldboy

oldboy

alex

lidao996

中级:文件中有些行包含空格(只有空格)

[root@oldboyedu /oldboy]# egrep -v '^|^ +' /oldboy/blank.txt

oldboy oldboy

oldboy

alex

lidao996

究极:

^ *$理解

^当*表示0次的时候 就相当于是 ^

^ +当*表示1次及1次以上 ^ +

[root@oldboyedu /oldboy]# egrep -v '^ *$' /oldboy/blank.txt

oldboy oldboy

oldboy

alex

lidao996

egrep -n "[0-9]+|[a-Z]+" 1.cc

[0-9]+ 连续数字

[a-Z]+ 连续的字母(大小写)

cat file.txt|grep -v "^"|grep -v "^ +"

cat file.txt|grep -v "^$" ××××× 脱裤子放P

grep -v '^$' file.txt

1个英文的字符 占1个字节

1KB=1024字节

1MB=1024KB

1GB=1024MB=1024^3字节

sed 过滤 替换 修改文件内容 增删改查

-n 取消默认输出

-I 修改文件内容 -i.bak 修改之前进行备份

-r 支持扩展正则 只支持基础正则

-e 多次编辑

-l 只显示文件名

执行过程:

[https://www.processon.com/view/link/5bea32c5e4b0ad314e894f53] sed命令执行过程

sed -n '/102/,/104/p' maav.txt / /,/ / 里的内容表示一个范围

sed命令的后向引用或反向引用

sed -r ‘s#( )#\1#g’

核心:先保护,后使用

先把需要的内容通过()括起来,然后在后面通过\数字 进行使用。

[root@CentOS-F/tmp]# echo {1..10}|sed -r 's#([0-9]+)#<\1>#g'

<1> <2> <3> <4> <5> <6> <7> <8> <9> <10>

题目1:

cp /etc/passwd /oldboy/

把 /oldboy/passwd 第1列和最后一列调换位置

sed -r 's#(^.)(:x.:)(.*$)#\3\2\1#g' oldboy.txt

题目2:取出里面的644或0644 sed后向引用方法

[root@oldboyedu /oldboy]# stat /etc/hosts

File: ‘/etc/hosts’

Size: 158 Blocks: 8 IO Block: 4096 regular file

Device: 803h/2051d Inode: 16829878 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2020-10-26 03:47:16.874000256 +0800

Modify: 2013-06-07 22:31:32.000000000 +0800

Change: 2019-03-04 11:15:49.426692303 +0800

Birth: -

stat /etc/hosts|sed -n '4p'|sed -r 's#^.(([0-9]+)/.$#\1#g'

stat /etc/hosts|sed -n '4p'|sed -r 's#^.(0(.)/-.*$#\1#g'

课后:

1.三剑客习题

https://www.jianshu.com/p/61d8883719ac

2.每个人找出2-3个三剑客题目

awk 过滤****取列****统计计算

相关文章

网友评论

      本文标题:2019-04-08 Day27 李导的三剑客之grep、s

      本文链接:https://www.haomeiwen.com/subject/dwcmiqtx.html