文字查詢需要
正規表示式grep:global research:根據模式,搜尋文字,並將符合模式的文字行顯示出來。
pattern:文字字元和正規表示式的元字元組合而成的匹配條件
man grep:檢視幫助
查詢/etc/passwd檔案包含root的內容;
[root@iz233y80y23z ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
grep [option] [pattern] file
--color:高亮顏色;alias grep="grep --color"
-i:忽略大小寫;
-v:顯示沒有被模式匹配的行。
-o:只顯示被模式匹配到的串本身。每個串顯示為一行。
egrep及擴充套件正規表示式regular expression,regexp;
正常預設情況,grep 工作在貪婪模式,盡可能多的匹配。
.*:任意字元。
元字元:
.:匹配任意單個字元
:匹配指定範圍內的任意單個字元。
[^]:匹配指定範圍外的任意單個字元。
[:digit:]:數字匹配;[:lower:]:小寫字母;[:upper:]大寫字母;[:punct:]:符號
[:space:]:所有空格;[:alpha:]:所有字母;[:alnum:]所有數字字母;
eg:[root@iz233y80y23z ~]# grep '[[:digit:]]$' /etc/inittab
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
匹配次數:
*:匹配其前面的字元任意次;a*b:a出現任意次後面加上b;跟檔案通配不同;注意;
\?:匹配其前面字元1次或者0次;需要轉義字元\;grep 'a\?b' grep.txt
\+:匹配其前面字元出現至少一次。需要轉義字元\;grep 'a\+b' grep.txt
\:匹配其前面字元出現該範圍區間的。grep 'a\b' grep.txt
位置錨定:
^:錨定行首,此字元後面的任意內容必須出現在行首。grep '^r..t' /etc/passwd
$:錨定行尾,此字元前面的任意內容必須出現在行尾。grep 'bash$' /etc/passwd
^$:空白行。# grep '^$' /etc/bashrc | wc -l
\《或者\b:其後面的任意字元必須作為單詞首部出現。
\>或者\b:其前面的任意字元必須作為單詞尾部出現。
\:root必須作為單詞的首部或者尾部;
eg:[root@iz233y80y23z test]# cat word.txt
this is root.
the user is mroot
rooter is a dog,s name
chroot is command
mrooter is dog
root is my dd
[root@iz233y80y23z test]# grep '\' word.txt
this is root.
root is my dd
eg:[root@iz233y80y23z test]# cat grep.txt ab
abaab
acbadb
amnb
grep 'a\?b' grep.txt
分組:\(\):在後面能引用到
\(ab\)*:ab這個分組可以出現零次一次或者n次;grep '\(ab\)*' grep.txt
後向引用:
\1:第乙個左括號以及與之對應的右括號所包含的所有內容。# grep '\(l..e\).*\1' lover.txt
\2:第二個括號。
eg:[root@iz233y80y23z test]# cat lover.txt
he love his lover
she like her lover
he like his liker
she love his lover
fgrep:fast grep快速匹配。正規表示式;basic regexp;擴充套件正規表示式:extended regexp;擴充套件。大多數支援基本正規表示式。
grep:使用基本正規表示式定義的模式來過濾文字的命令。
-i:忽略大小寫;-v:表示顯示沒有匹配行。--color;
-e:使用擴充套件正規表示式。
-a #n:當某一行被grep匹配到的時候,下面的n行同時顯示。
#grep -a 2 '^core id' /proc/cpuinfo
-b #n:當某乙個行被grep匹配到的時候,上面n行同時顯示
-c #n:當某一行被grep匹配到的時候,上下n行同時顯示。
擴充套件的正規表示式:-e擴充套件;grep -e = egrep
字元匹配:.,,[^]
次數匹配:*,?:不需要加反斜線。+:匹配其前面字元至少一次。
錨定字元相同:^,$,\<,\>
分組:():不需要加反斜線,真正分組的意義;
\1,\2,\3
或者:a|b:or或者的意思。c|cat:c或者cat,匹配的是整個左邊或者右邊;(c|c)at:cat或者cat;
eg:grep --color -e '^[[:space:]]+' /boot/grub/grub.conf:至少乙個空白字元開頭。
查詢1-255之間的數字;必須是單個單詞出現的。
egrep --color '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
ifconfig | egrep --color '(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.)\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
'\<([1-9]|[1-9][0-9]|1[0-9]|2[0-1][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9])\>)\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'
ifconfig | egrep --color '\<([1-9]|[1-9][0-9]|1[0-9]|2[0-1][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-9])\>)\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'
不支援正規表示式。速度比較快。
grep正規表示式
grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到螢幕,不影響原檔案內容。grep可用於shell指令碼,因為grep通過返回乙個狀態值來說明搜尋的狀態,如果模板搜尋成功,則返回0,如果搜尋不成功,則返回1,如果...
Grep正規表示式
grep正規表示式 要用好grep這個工具,其實就是要寫好正規表示式,所以這裡不對grep的所有功能進行例項講解,只列幾個例子,講解乙個正規表示式的寫法。ls l grep a 通過管道過濾ls l輸出的內容,只顯示以a開頭的行。grep test d 顯示所有以d開頭的檔案中包含test的行。gr...
grep 正規表示式
1 或操作 grep e 123 abc filename 找出檔案 filename 中包含123或者包含abc的行 egrep 123 abc filename 用egrep同樣可以實現 awk 123 abc filename awk 的實現方式 2 與操作 grep pattern1 fil...