grep:英文縮寫global search regular expression and print out the line(全面搜尋正規表示式並把行列印出來),是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。
正規表示式是對字串操作的一種邏輯公式,用事先定義好的一組特殊字元,組成乙個「規則字元集合」,根據使用者指定的文字模式對目標檔案進行逐行搜尋匹配,顯示能被模式匹配到的結果。
給定乙個正規表示式和另乙個目標字串,我們可以從給定的字串中通過匹配模型,過濾字串中不想要的的字串,得到目標字串,減少工作量。
gun/linux下grep包括 grep、egrep和 fgrep
- egrep是grep的擴充套件,等同grep -e
- fgrep就是fixed grep或fast grep,等同grep -f不使用任何正規表示式,直接進行字串匹配
常用的正規表示式一般為基本正規表示式grep和擴充套件正規表示式egrep。
擴充套件正規表示式與基礎正規表示式的唯一區別在於:? + () {} 這幾個字元。
基礎正規表示式中,如果你想? + () {}表示特殊含義,你需要將他們轉義,
而擴充套件正規表示式中,如果你想? + () {} 不表示特殊含義,你需要將他們轉義。
如下例子:
[echo@localhost]$ echo aaaa | grep 'a?'
[echo@localhost]$ echo aaaa | grep '\a?'
aaaa
[echo@localhost]$ echo aaaa | grep -e 'a?'
aaaa
[echo@localhost]$ echo aaaa | egrep ' a?'
aaaa
grep [option] pattern [file]…
-o
:只顯示被模式匹配到的內容
-i
:ignore case,不區分字元大小寫
-e
:使用擴充套件的正規表示式
-w
:匹配乙個完整的單詞
-v
:沒有匹配到的行
-n
:列印出匹配字串的在檔案中的行號
--color
:對匹配的字串著色列印
-5
:匹配字元及前後各5行
-a 5
:匹配字元及後5行,同-c 5
-b 5
:匹配字元及前5行
grep -oin 'root' /etc/passwd #顯示行號,不區分大小寫只匹配到字元本身
.
:匹配任意單個字元
:匹配指定範圍內的任意單個字元
[^]
:匹配指定範圍外的任意單個字元
[0-9]
:匹配陣列 0-9 的任意乙個
[0-z]
:匹配任一數字及小寫字母
[0-z]
:匹配任一數字及大小寫字母
[[:digit:]]
:匹配任意單個數字
[[:lower:]]
:匹配任意單個小寫字母,等同[a-z]
[[:upper:]]
:匹配任意單個大寫字母,等同[a-z]
[[:space:]]
:匹配任意單個空白字元
[[:punct:]]
:匹配任意單個標點符號
[[:alpha:]]
:匹配任意單個英文本母
[[:alnum:]]
:匹配任意單個字母或數
grep [^0-9[:lower:]] /etc/passwd # 匹配除數字和小寫字母以外的字元
*
: 匹配前面的字元任意次
.*
:匹配任意次 ,即匹配任意長度的任意字元
\?
:匹配前面的字元 0 次或者 1 次
\+
: 匹配前面的字元 1 次或多次
\
:匹配前面的字元 m 次
\
:匹配前面的字元至少 m 次,至多 n 次
\
:匹配前面的字元至少 m 次
\
:匹配前面的字元至多 n 次
grep "[0-9]\+.*[[:punct:]]\" /etc/passwd # 至少乙個數字及3個以上標點符號
^
:錨定行首
$
:錨定行尾
\<
或\b
:錨定詞首
\>
或\b
:錨定詞尾
grep -n "^[[:space:]]\+$" mydata.txt # 找出空白行的行號grep "^#[[:space:]]\[^[:space:]]" /etc/inittab # 以#開頭,且後面跟乙個或多個空白字元,而後又跟了任意非空白字元的行
grep '^\([0-9]\).*\1$' /etc/inittab # 乙個數字開頭並以乙個與開頭數字相同的數字結尾的行
以使用括號\(***\)
將一組字元括起來,表示這一組字元被當作乙個整體,還可以使用 \1, \2… 對前面括號匹配所匹配的字串進行引用
# 首個單詞和最後乙個單詞一樣的行 grep "^\(\ # 匹配包含mysql或apache或redis的行,`|`表示或 egrep "mysql|apache|redis" mydata.txt # 匹配ipv4的位址 egrep "(\ # 取出預設shell為bash,且其使用者id號最小的使用者的使用者名稱 grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1
Linux文字處理三劍客
grep 作用 文字搜尋工具,根據使用者指定的 模式對目標檔案逐步進行匹配檢查,列印匹配到的行 grep root etc passwd grep命令選項 grep user etc passwd v 顯示不被pattern 匹配的行 e 僅顯示匹配到的字串 grep user etc passwd...
linux文字處理三劍客
常用引數 v 顯示不能夠被匹配到的行 i 忽略大小寫字元 o 僅顯示匹配到的字串 q 靜默模式,不輸出任何資訊 a 後 行 b 前 行 c 前後各 行 e 使用ere,相當於egrep常用引數 n 只列印模式匹配的行 e 直接在命令列模式上進行sed動作編輯,此為預設選項 f 將sed的動作寫在乙個...
文字處理三劍客
文字處理三劍客 劍客一 grep 作用 行 過濾 用法 grep 正規表示式 檔案 路徑 grep e 擴充套件類正規表示式 檔案 路徑 劍客二 sed 用法 sed 選項 位址定位sed命令 檔案 路徑 sed 選項 正規表示式 sed命令 檔案 路徑 sed 選項 位址定位 正規表示式 sed命...