正則

grep命令

是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。html

 

1.grep命令mysql

2. -c 查看行數正則表達式

[root@bogon grep]# grep -c 'nologin' passwd 
41
[root@bogon grep]# 

3.-n顯示行號sql

4.-i不區分大小寫bash

5.-v取反,就是除了匹配的行剩下的顯示出來ssh

[root@bogon grep]# grep -vni 'nologin' passwd 
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
44:sunyujun:x:1000:1000:sunyujun:/home/sunyujun:/bin/bash
[root@bogon grep]# 

6.-r 遍歷全部子目錄編輯器

7.-A指定列出查找到行的下面兩行 -B指定列出查找到行的上面兩行  -C 指定列出查找到行的上下兩行工具

[root@bogon grep]# grep -A2 'nologin' passwd 

8.[root@bogon grep]# grep [0-9] passwd  匹配數字post

9.^以什麼開頭spa

[root@bogon grep]# grep -n '^a' passwd     
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
18:abrt:x:173:173::/etc/abrt:/sbin/nologin
34:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
41:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
[root@bogon grep]# 

10..匹配任意一個字符

[root@bogon grep]# grep -n 'a.t' passwd    
8:halt:x:7:0:halt:/sbin:/sbin/halt
24:saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
27:rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
34:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
[root@bogon grep]# 

11.*匹配前面的子表達式0或屢次

12.{} 匹配次數,用egrep就不用\轉譯了或者用grep -E

12.+匹配前面的子表達式一次或屢次

 

12.?匹配前面的子表達式零次或一次

 

13.| 或者

sed命令

https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html 

是一種流編輯器,它是文本處理中很是中的工具,可以完美的配合正則表達式使用,功能與衆不同。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲「模式空間」(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並無 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反覆操做;編寫轉換程序等。

sed 能夠實現 grep的功能,還能夠替換文件內容
1.sed匹配字符串,p打印,-n 只顯示匹配的行,不加-n會把全部的行都顯示出來

[root@bogon sed]# sed -n '/root/'p passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon sed]# 

2.sed也支持. * +

[root@bogon sed]# sed -n '/r.t/'p passwd 
operator:x:11:0:operator:/root:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@bogon sed]#

3.匹配+號須要轉譯或者加r選項

[root@bogon sed]# sed -n '/o\+t/'p passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin
[root@bogon sed]# sed -nr '/o+t/'p passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin
[root@bogon sed]# 

4.sed支持{} | 

[root@bogon sed]# sed -nr '/o{2}/'p passwd 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@bogon sed]#

[root@bogon sed]# sed -nr '/root|bash/'p passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
sunyujun:x:1000:1000:sunyujun:/home/sunyujun:/bin/bash
[root@bogon sed]# 

5.sed打印指定的行(打印第2行)

[root@bogon sed]# sed -n '2'p passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
[root@bogon sed]# 

6.sed打印2-5行

[root@bogon sed]# sed -n '2,5'p passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@bogon sed]# 

7.sed 打印2到行尾

[root@bogon sed]# sed -n '2,$'p passwd 

8.sed 打印所有行

[root@bogon sed]# sed -n '1,$'p passwd 

9.sed -e直接在命令列模式上進行 sed 的動做編輯;匹配第一行而且匹配bus

[root@bogon sed]# sed -e '1'p -e '/bus/'p -n passwd 
root:x:0:0:root:/root:/bin/bash
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@bogon sed]#

 10.sed不區分大小寫匹配 + 大寫的 i

[root@bogon sed]# sed -n '/bus/'p passwd 
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@bogon sed]# sed -n '/bus/'Ip passwd  
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@bogon sed]# 

11.sed刪除匹配的行+i 選項是真刪除了,不加i只是在屏幕上顯示效果(刪除前兩行)

[root@bogon sed]# sed -i '1,2'd passwd 

12.sed將root相關的行刪掉

[root@bogon sed]# sed -i '/root/'d passwd

13.sed替換功能將1-10行的root所有替換成toor

[root@bogon sed]# sed '1,10s/root/toor/g' passwd
toor:x:0:0:toor:/toor:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

14.sed支持正則替換將roo替換成r

[root@bogon sed]# sed -r '1,10s/ro+/r/g' passwd     
rt:x:0:0:rt:/rt:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

15.將第一段和最後一段調換位置

[root@bogon sed]# head passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon sed]# head passwd |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
/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
[root@bogon sed]# 

16.將全部的英文字母替換掉

[root@bogon sed]# head passwd |sed 's/[a-zA-Z]//g'
::0:0::/://
::1:1::/://
::2:2::/://
::3:4:://://
::4:7::///://
::5:0::/://
::6:0::/://
::7:0::/://
::8:12::///://
::11:0::/://
[root@bogon sed]# 

 17.給全部的行前面加上aaa

[root@bogon sed]# head passwd |sed -r 's/(.*)/aaa:&/'
aaa:root:x:0:0:root:/root:/bin/bash
aaa:bin:x:1:1:bin:/bin:/sbin/nologin
aaa:daemon:x:2:2:daemon:/sbin:/sbin/nologin
aaa:adm:x:3:4:adm:/var/adm:/sbin/nologin
aaa:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
aaa:sync:x:5:0:sync:/sbin:/bin/sync
aaa:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
aaa:halt:x:7:0:halt:/sbin:/sbin/halt
aaa:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
aaa:operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon sed]# 

awk命令

1.支持分段查找(查找以冒號分割開的第一段)

[root@bogon awk]# awk -F ':' '{print $1}' passwd          
root
bin
daemon
adm
lp
sync
shutdown
halt
mail

2.打印全部的段

[root@bogon awk]# awk -F ':' '{print $0}' passwd  
[root@bogon awk]# awk '{print $0}' passwd 

3.不指定分割符默認以空格分割

[root@bogon awk]# awk '{print $1}' passwd

4.打印多列

[root@bogon awk]# awk -F ':' '{print $1,$2,$3}' passwd 
root x 0
bin x 1
daemon x 2
adm x 3
lp x 4
sync x 5

5.打印結果用#號分割

[root@bogon awk]# awk -F ':' '{print $1"#"$2"#"$3}' passwd   
root#x#0
bin#x#1
daemon#x#2
adm#x#3
lp#x#4

6.查找有oo的行

[root@bogon awk]# awk '/oo/' passwd 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@bogon awk]# 

7.匹配第一段包含oo的行

[root@bogon awk]# awk -F ':' '$1 ~ /oo/' passwd 
root:x:0:0:root:/root:/bin/bash
setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin
[root@bogon awk]# 

8.一樣支持正則表達式+查找第一行有oo的

[root@bogon awk]# awk -F ':' '$1 ~ /oo+/' passwd 
root:x:0:0:root:/root:/bin/bash
setroubleshoot:x:990:987::/var/lib/setroubleshoot:/sbin/nologin
[root@bogon awk]# 

9.支持多個表達式一塊兒寫

[root@bogon awk]# awk -F ':' '/root/ {print $1,$3} /user/ {print $3,$4}' passwd 
root 0
operator 11
59 59
113 113
993 76
75 75
107 107
29 29
[root@bogon awk]# 

 

[root@bogon awk]# grep -E 'root|user' passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
[root@bogon awk]# 

 

[root@bogon awk]# awk -F ':' '/root|user/ {print $0}' passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
[root@bogon awk]# 

10.查找第三段等於0的

[root@bogon awk]# awk -F ':' '$3==0' passwd 
root:x:0:0:root:/root:/bin/bash
[root@bogon awk]# 

11.就要第一段(注意:數字比較的時候不要加雙引號)

[root@bogon awk]# awk -F ':' '$3==0 {print $1}' passwd  
root
[root@bogon awk]# 

12.大於等於

[root@bogon awk]# awk -F ':' '$3>=1000 {print $1}' passwd 
nfsnobody
sunyujun
mysql
www
[root@bogon awk]# 
[root@bogon awk]# awk -F ':' '$3>=1000 {print $0}' passwd  
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
sunyujun:x:1000:1000:sunyujun:/home/sunyujun:/bin/bash
mysql:x:1001:1001::/home/mysql:/sbin/nologin
www:x:1002:1002::/home/www:/sbin/nologin
[root@bogon awk]# 

13.不等於

[root@bogon awk]# awk -F ':' '$7!="/sbin/nologin" {print $0}' passwd 
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
sunyujun:x:1000:1000:sunyujun:/home/sunyujun:/bin/bash
[root@bogon awk]# 

14.變量比較

[root@bogon awk]# awk -F ':' '$3<$4' passwd  
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@bogon awk]# 

15.&& 比較

[root@bogon awk]# awk -F ':' '$3>"5" && $3<"7"' passwd    
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@bogon awk]# 

16. ||

[root@bogon awk]# awk -F ':' '$3>2500 || $7=="/sbin/nologin"' passwd 

17.~匹配 第七段包含/sbin/nologin的或者第三段大於2000的

[root@bogon awk]# awk -F ':' '$3>2000 || $7 ~ /sbin/nologin' passwd     
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@bogon awk]# 

18.OFS 定義打印的分隔符

[root@bogon awk]# awk -F ':' '{OFS="#"} $3>2000 || $7 ~ /sbin/nologin {print $1}' passwd  
nfsnobody
[root@bogon awk]# 

19.if判斷

[root@bogon awk]# awk -F ':' '{OFS="#"} {if ($3 > 1000) {print $1,$2}}' passwd 
nfsnobody#x mysql#x www#x [root@bogon awk]#

20.NR 標示行號

[root@bogon awk]# awk -F ':' '{print NR":"$0}' passwd 
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin

21.NF顯示有多少段

[root@bogon awk]# awk -F ':' '{print NF":"$0}' passwd                           
7:root:x:0:0:root:/root:/bin/bash
7:bin:x:1:1:bin:/bin:/sbin/nologin
7:daemon:x:2:2:daemon:/sbin:/sbin/nologin
7:adm:x:3:4:adm:/var/adm:/sbin/nologin
7:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
7:halt:x:7:0:halt:/sbin:/sbin/halt
7:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
7:operator:x:11:0:operator:/root:/sbin/nologin

22.打印前十行

[root@bogon awk]# awk -F ":" 'NR<=10' passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon awk]# 

23..打印前十行而且包含root或者sync

[root@bogon awk]# awk -F ":" 'NR<=10 && $1 ~ /root|sync/' passwd  
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
[root@bogon awk]# 

24.NF=6

[root@bogon awk]# awk -F ":" 'NF=6 && $1 ~ /root|sync/' passwd      
root
sync
[root@bogon awk]# 

25. $NR":"$NF

[root@bogon awk]# awk -F ":" '{print $NR":"$NF}' passwd                         
root:/bin/bash
x:/sbin/nologin
2:/sbin/nologin
4:/sbin/nologin
lp:/sbin/nologin
/sbin:/bin/sync
/sbin/shutdown:/sbin/shutdown
:/sbin/halt
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin
:/sbin/nologin

26.$1賦值操做

[root@bogon awk]# head -n 3 /etc/passwd |awk -F ':' '$1="root"'
root x 0 0 root /root /bin/bash
root x 1 1 bin /bin /sbin/nologin
root x 2 2 daemon /sbin /sbin/nologin
[root@bogon awk]# 

27.第三列循環求和

[root@bogon awk]# awk -F ':' '{(tot=tot+$3)}; END {print tot}' passwd 
82198
[root@bogon awk]# 
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息