1. 程式人生 > >grep正則方法示範

grep正則方法示範

http F12 內容 fad system usr mage term oca

grep 正則過濾

正則是一組有規律的字符串
grep過濾字符並加以顏色顯示

[root@localhost src]# grep ‘nologin‘ passwd    
             過濾出nologin字符

技術分享圖片

過濾出nologin字符並顯示行號

[root@localhost src]# grep -n ‘nologin‘ passwd 
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
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

grep -i 過濾出字符不區分大小寫,第四行為大寫的字符

[root@localhost src]# grep -ni ‘nologin‘ passwd 
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
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

grep -v 過濾指定的取反字符,把nologin以外的顯示出來

[root@localhost src]# grep -v ‘nologin‘ passwd 
root:x:0:0:root:/root:/bin/bash
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

grep -r ‘root‘ 遍歷過濾包含root字符的文件,使用-r選項可以過濾多個文件中的關鍵字符,例如用來查看不同日期產生的輸出日誌關鍵信息

技術分享圖片
grep -A 行數 遍歷出指定字符行下的幾行,如下列的ftp字符行下面的三行

[root@localhost src]# grep -A3 ‘ftp‘ passwd 
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

grep -B 行數 遍歷出指定字符行上的幾行,如下面的ftp字符行上的三行

[root@localhost src]# grep -B3 ‘ftp‘ passwd 
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

grep -C 行數 遍歷出指定字符行上下的幾行,如下的ftp字符行上下的各三行

[root@localhost src]# grep -C3 ‘ftp‘ passwd 
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

grep正則匹配
首先看下操作的文件內容,文件內容包含多個空行和一個註釋行,匹配文件中有註釋、空行、數字混合行

技術分享圖片

grep ‘[0-9]‘ 過濾匹配帶有數字的行

[root@localhost src]# grep ‘[0-9]‘ 1.txt

技術分享圖片截圖顯示帶顏色的內容

grep -v ‘[0-9]‘ 取出不帶數字的行

[root@localhost src]# grep -v ‘[0-9]‘ 1.txt 

技術分享圖片
grep -v ‘^$‘ 和 ‘^#‘ 去除一個文件中空行和註釋行,^表示以某字符開頭,$表示以某字符結尾。^$一起使用代表匹配空行

[root@localhost src]# grep "^#" 1.txt 
#jfhdot4u89<F3>hiuy76flker
[root@localhost src]# grep -v  ‘^#‘ 1.txt |grep -v ‘^$‘
1234576543235467653
xccvjhgjdf235346423dsfd23ase3
asf42345rrf34rf4rfcer
r4t3eqw34t5w4f4354
3435232454fd
f344fss44e4444
r4t5yty5
DDDDGGDSAGDFhjfjdgfdghgf<F2><F4><F
35greUGFG&&y8t6rR%Tf*(Y8Joh
"LF"D
KL#RJ(FYBN@Tfgyyy4wg7t6t6hniut
KFhu3u5485<F3><F4>u‘;":}
:F
dfjhotioreh4j<F3><F8>K?"
:KF
:KJH

grep ‘[^a-z]‘ 使用中括號取反a-z的值,截圖示例如下

[root@localhost src]# grep ‘[^a-z]‘ 1.txt

技術分享圖片

截圖中可以清楚的看到除了a-z以外的所有字符都會被標記上顏色,如果中括號外再加上^開頭符號。則只會顯示非a-z開頭的字符內容,如下

[root@localhost src]# grep ‘^[^a-z]‘ 1.txt 

技術分享圖片
grep匹配任意一個字符,匹配結果中會包含任意一個字符

[root@localhost src]# grep ‘a.c‘ 1.txt

技術分享圖片

grep ‘.*‘ 匹配任意個任意字符。指定字符時則是這個字符後面的任意的全部字符

[root@localhost src]# grep ‘h.*‘ 1.txt

技術分享圖片
egrep匹配字符出現的第幾次

[root@localhost src]# egrep ‘h{2}‘ 1.txt

技術分享圖片
egrep ‘h+s‘ 匹配符合某兩個符號的字段,無論這個兩個相鄰字符出現的次數

[root@localhost src]# egrep ‘h+s‘ 1.txt 

技術分享圖片
egrep 匹配包含某些字符的行,不管匹配到的字符前面或結尾是否存在其他不相關的字符,又例如ifconfig列出網卡信息

[root@localhost src]# egrep ‘hd+‘ 1.txt

技術分享圖片

技術分享圖片

[root@localhost src]# ifconfig |egrep ‘inet *.+ netmask‘ 

技術分享圖片

egrep匹配多個字符(字符或另一個字符)

[root@localhost src]# egrep -i ‘root|ftp‘ /etc/passwd

技術分享圖片

egrep匹配指定字符出現次數,及匹配字符出現多次

[root@localhost src]# egrep ‘(oo)‘ passwd 

技術分享圖片

對出現兩次的字符進行匹配

[root@localhost src]# egrep ‘(oo){2}‘ passwd

技術分享圖片

grep正則方法示範