三劍客:
grep? 過濾
-E
支持?jǐn)U展正則===egrep
-o
只顯示匹配到的內(nèi)容? 顯示grep執(zhí)行過程
-v
取反
-i
不區(qū)分大小寫? ignore case? ? find? /oldboy -type f -iname "*.txt"
-n
顯示行號 cat -n
-w
按照單詞進(jìn)行匹配
-A
9? after 顯示grep找出的行及接下來的 9行
-B
9? before
-C
9? 上下
-r
-l (小寫字母L)
-P? 用于過濾Perl兼容正則表達(dá)式
sed? ? 過濾 替換 修改文件內(nèi)容 增刪改查
awk? ? 過濾 取列 統(tǒng)計(jì)計(jì)算
三劍客
grep
sed
awk
Unix中在當(dāng)前目錄下所有.cc 的文件中找到含有“asiainfo”內(nèi)容的文件簿寂,命令為_______
找出當(dāng)前目錄下包含127.0.0.1關(guān)鍵字的文件?
寫出查詢file.txt以abc結(jié)尾的行
grep 'abc$' file.txt
寫出刪除abc.txt文件中的空行
mkdir -p /oldboy/alex/
for n in {1..5}
do
echo "oldboy 127.0.0.1"? >/oldboy/$n.cc
echo "oldboy 127.0.0.1"? >/oldboy/alex/$n.cc
done
Unix中在當(dāng)前目錄下所有.cc 的文件中? 找到含有“asiainfo”內(nèi)容的文件裸准,命令為_______
find
find .
find /oldboy/ -type f -name "*.cc" |xargs grep 'asiainfo'
grep 'asiainfo'? /oldboy/*.cc
#find命令可以找出這個目錄下面所有層的內(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
找出當(dāng)前目錄下包含127.0.0.1關(guān)鍵字的文件柬焕?
grep -r '127.0.0.1'? .
find
[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
寫出查詢file.txt以abc結(jié)尾的行
寫出刪除abc.txt文件中的空行
基礎(chǔ)
[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
究極:
^ *$理解
^$? ? 當(dāng)*表示0次的時(shí)候? ? 就相當(dāng)于是 ^$
^ +$? 當(dāng)*表示1次及1次以上? ? ? ? ? ? ^ +$
[root@oldboyedu /oldboy]# egrep -v '^ *$' /oldboy/blank.txt
oldboy oldboy
oldboy
alex
lidao996
待解釋方法:
grep "!^$"? abc.txt
! find sed awk中表示取反
egrep -v "(^$| )"? blank
egrep -v "(^$|^ $)"? blank
egrep -n? "[0-z]" oldboy.txt?
? ? '[0-Z]'
[root@oldboyedu /oldboy]# egrep -n? "[0-z]"? blank.txt
1:oldboy oldboy
4: oldboy
6:alex
7:lidao996
egrep "^[^$]" blank.txt
過濾出不是以$符號開頭的行
egrep "[^$]" blank.txt
[root@oldboyedu /oldboy]# egrep "[^$]" blank.txt
oldboy oldboy
oldboy
alex
lidao996
$$$$$$####oldboyedu.com
[root@oldboyedu /oldboy]# #排除$符號
egrep -n? "[0-9]+|[a-Z]+" 1.cc
[0-9]+ 連續(xù)數(shù)字
[a-Z]+ 連續(xù)的字母(大小寫)
cat file.txt|grep -v "^$"|grep -v "^ +$"
cat file.txt|grep -v "^$"? ×××××? 脫褲子方P
grep -v '^$' file.txt
1個英文的字符 占1個字節(jié)
1KB=1024字節(jié)
1MB=1024KB
1GB=1024MB=1024^3字節(jié)
sed? "/[? ]/d" 555?
sed? "/^$/d" 555
三劍客老二-sed命令
https://www.processon.com/view/link/5bea32c5e4b0ad314e894f53
老男孩教育-sed命令執(zhí)行過程
[root@oldboyedu /oldboy]# sed -n '1,5p' maav.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[root@oldboyedu /oldboy]# sed -n '/101/,/105/p' maav.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
sed命令的后向應(yīng)用或反向引用 :
sed -r 's#()#\1#g'
核心: 先保護(hù)蜡娶,后使用
先把你要的內(nèi)容通過()括起來,然后在后面通過\數(shù)字 進(jìn)行使用。
[root@oldboyedu /oldboy]# 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)換位置
題目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: -
題目1:
cp /etc/passwd? /oldboy/
把 /oldboy/passwd 第1列和最后一列調(diào)換位置
[root@oldboyedu /oldboy]# sed -r 's#(^.*)(:x.*:)(.*$)#\3\2\1#g' /oldboy/passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
老男孩教育-sed后向引用調(diào)換/etc/passwd第1列和最后一列
https://www.processon.com/view/link/5cab2621e4b087434367338b
題目2:取出里面的644或0644 sed后向引用方法
老男孩IT教育出品-sed命令反向引用取出/etc/hosts文件權(quán)限
https://www.processon.com/view/link/59fbc9c0e4b0f84f89765231