grep (global search regular re) and print out the line,全面搜尋正規表示式並把行列印出來)是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。unix的grep家族包括g
grep, egrep, fgrep
grep: 預設支援基本正規表示式;
egrep: 擴充套件正規表示式;
fgrep: 不支援正規表示式元字元,搜尋字串的速度快,等同於grep -f
正規表示式是一類字元所書寫的模式(pattern)
元字元:不表示字元本身的意義,而用於額外功能性的描述;
grep [options] 'pattern' file
正規表示式:基本正規表示式,擴充套件正規表示式;
基本正規表示式:貪婪模式(盡可能長地去匹配符合模式的內容)
^:錨定行首的符合條件的內容,用法格式「^pattern」;
$: 錨定行尾的符合條件的內容,用法格式「pattern$」;
.: 匹配任意單個字元
*:匹配緊挨在其前面的字元任意次;
a*b: ab, aab, acb, b
.*: 匹配任意長度的任意字元
:匹配指定範圍內的任意單個字元
[^]:匹配指定範圍外的任意單個字元
\?: 匹配緊挨在其前面的字元0次或1次;
\: 匹配其前面的字元至少m次,至多n次;
\: 至多n次;0-n次;
:至少m次
\: 精確匹配m次;
\<: 錨定詞首,用法格式:\\>: 錨定詞尾,用法格式:pattern\>
\(\): 分組,用法格式: \(pattern\)
grep的選項:
--color=auto 自動為匹配的字元附色
export grep_color='01;36'
-r: 遞迴搜尋用法同 -d recurse(遞迴)
-v: 反向選取,只顯示不符合模式的行;
-o: 只顯示被模式匹配到的字串,而不是整個行;
-i: 不區分字元大小寫;
-a #:顯示匹配到的行時,順帶顯示其後面的#個行;
-b #:前面的#行;
-c #:前後的#行;
-e: 使用擴充套件的正規表示式
grep -e = egrep
grep選項應用例項
[root@localhost ~]#
nano /tmp/grepr 建立檔案,檔案內容下面會顯示;
[root@localhost ~]# cat /tmp/grepr | grep -v "^$" 反向選擇,顯示檔案中的非空白行
nichilema
magezhenxing
nishishui
wolaile
mingtianjian
nihaihaoma
[root@localhost ~]# cat /tmp/grepr | grep --color -i "m" 不區分m的大小寫,只要行中有m/m,都將該行顯示出來
nichilema
magezhenxing
mingtianjian
nihaihaoma
[root@localhost ~]# cat /tmp/grepr | grep --color -o "m"只顯含有m的行m
m m
[root@localhost ~]# cat -n /tmp/grepr | grep -a 1 --color "wolaile" 若行中含有「wolaile」 則顯示該行和它後邊的那一行
4wolaile 5
mingtianjian
[root@localhost ~]#
cat -n /tmp/grepr | grep -b 1 --color "wolaile"若行中含有「wolaile」 則顯示該行和它前邊的那一行
3nishishui 4
wolaile
[root@localhost ~]#
cat -n /tmp/grepr | grep -c 1 --color "wolaile" 若行中含有「wolaile」 則顯示該行和它前後各一行
3nishishui 4
wolaile 5
mingtianjian
grep 正規表示式例項
1,錨定/etc/passwd檔案中行首為root的行
# grep
「^root
」/etc/passwd
2,錨定/etc/passwd檔案行尾為sh的行
# grep
「sh$
」/etc/passwd
3,查詢空白行
# grep 「^$
」/etc/passwd
4,匹配a後面跟了任意單個字元的行
# grep 「a.
」/etc/passwd
5,匹配a後面跟了任意個a的行
# grep 「a*
」/etc/passwd
4,匹配a後面跟了任意長度的任意字元,再跟上b的行
# grep
「a.*b
」/etc/passwd
5,匹配a後面跟了任意個一數字後又跟了任意乙個字母的行
# grep
「a[0-9][a-za-z]
」/etc/passwd
6,匹配a後面跟了任意乙個數字或字母的行
# grep
「a[0-9a-za-z]
」/etc/passwd
7,匹配0或1個a後面跟了個b的行
# grep
「a\?b
」/etc/passwd
8,匹配最少乙個a,最多3個a後面跟了乙個b的行
# grep
「a\b
」/etc/passwd
9,錨定單詞admin的行
# grep 「\
」/etc/passwd
10,匹配自少出現一次ad,最多出現3次ad的行
# grep
「\(ab\)\
」/etc/passwd
rep、egrep和fgrep。
Linux基礎命令之grep
grep 根據pattern 模式 搜尋文字,並將符合模式的文字行顯示出來,並不會修改原檔案。用法 grep options pattern file 也可以利用管道進行匹配 i ignore 忽略大小寫 colour 將匹配的字串加顏色。v 反向查詢,顯示與pattern不匹配的行 o 只顯示被模...
linux基礎命令之選取命令grep
命令作用 分析一行資訊,若當中有我們所需要的資訊,就將該行拿出來。命令語法 grep acinv color auto 查詢字串 filename 引數 a 將binary檔案以text檔案的方式查詢資料 c 計算找到 查詢字串 的次數 i 忽略大小寫的不同,n 順便輸出行號 v 反向選擇,即顯示出...
linux基礎命令grep
目的 使用grep命令來查詢檔案中符合條件的字串 格式 grep 選項 查詢模式 檔名 舉例項看看 建立乙個檔案test1.txt,檔案的內容是 aaaaaaaaa abcabcabcabc cbacbacba match pattern nand erase 首先在查詢字串時,我們希望顯示如下內容...