三劍客深入:
grep 過(guò)濾
參數(shù):
-E 支持?jǐn)U展正則====egrep
-o 只顯示匹配的內(nèi)容 顯示grep執(zhí)行過(guò)程
-v 取反
-I 不區(qū)分大小寫(xiě) ignore case find /oldboy -type f -iname “*.txt”
-n 顯示行號(hào) cat -n
-w 按照單詞進(jìn)行匹配
-A 9 after 顯示grep找出的行及接下來(lái)的 9行
-B 9 before
-C 9 上下各9行
-P ??
-r 遞歸過(guò)濾,在目錄下所有層進(jìn)行過(guò)濾
-l (小寫(xiě)字母L)
練習(xí)題:
1、 Unix中在當(dāng)前目錄下所有.cc 的文件中找到含有“asiainfo”內(nèi)容的文件,命令為_(kāi)______
find ./ -type f -name “*.cc”|xargs grep ‘a(chǎn)siainfo’ 找出這個(gè)目錄下面所有層的內(nèi)容
grep ‘a(chǎn)siainfo’ ./*.cc 只用grep只默認(rèn)顯示第一層
find命令可以找出這個(gè)目錄下面所有層的內(nèi)容 [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只能默認(rèn)顯示第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、找出當(dāng)前目錄下包含127.0.0.1關(guān)鍵字的文件?
grep -r ‘127.0.0.1’ .
3、寫(xiě)出查詢file.txt以abc結(jié)尾的行
grep ‘a(chǎn)db$’ file.txt
4、寫(xiě)出刪除abc.txt文件中的空行
egrep -v “^$|^ $” abc.txt
cat -A 行首顯示$。
基礎(chǔ)
[root@oldboyedu /oldboy]# grep -v '^$' /oldboy/blank.txt
oldboy oldboy
oldboy
alex
lidao996
中級(jí):文件中有些行包含空格(只有空格)
[root@oldboyedu /oldboy]# egrep -v '^' /oldboy/blank.txt
oldboy oldboy
oldboy
alex
lidao996
究極:
^ *$理解
^
^ +
[root@oldboyedu /oldboy]# egrep -v '^ *$' /oldboy/blank.txt
oldboy oldboy
oldboy
alex
lidao996
egrep -n "[0-9]+|[a-Z]+" 1.cc
[0-9]+ 連續(xù)數(shù)字
[a-Z]+ 連續(xù)的字母(大小寫(xiě))
cat file.txt|grep -v "^"
cat file.txt|grep -v "^$" ××××× 脫褲子放P
grep -v '^$' file.txt
1個(gè)英文的字符 占1個(gè)字節(jié)
1KB=1024字節(jié)
1MB=1024KB
1GB=1024MB=1024^3字節(jié)
sed 過(guò)濾 替換 修改文件內(nèi)容 增刪改查
-n 取消默認(rèn)輸出
-I 修改文件內(nèi)容 -i.bak 修改之前進(jìn)行備份
-r 支持?jǐn)U展正則 只支持基礎(chǔ)正則
-e 多次編輯
-l 只顯示文件名
執(zhí)行過(guò)程:
[https://www.processon.com/view/link/5bea32c5e4b0ad314e894f53] sed命令執(zhí)行過(guò)程
sed -n '/102/,/104/p' maav.txt / /,/ / 里的內(nèi)容表示一個(gè)范圍
sed命令的后向引用或反向引用
sed -r ‘s#( )#\1#g’
核心:先保護(hù),后使用
先把需要的內(nèi)容通過(guò)()括起來(lái),然后在后面通過(guò)\數(shù)字 進(jìn)行使用。
[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列和最后一列調(diào)換位置
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.三劍客習(xí)題
http://www.lxweimin.com/p/61d8883719ac
2.每個(gè)人找出2-3個(gè)三劍客題目
awk 過(guò)濾****取列****統(tǒng)計(jì)計(jì)算