grep的功能強大,是linux行編輯的三劍客。linux
那grep是如何工做的 呢 ???git
grep命令在一個或者多個文件中搜索字符串模板。模板能夠是一個被引用的字符串或者是一個單詞。ide
其後面全部字符串被看作文件名。grep把搜索結果送道屏幕,可是不影響輸入文件spa
格式內存
grep [OPTIONS] PATTERN [FILE...]字符串
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]it
實例模板
grep user /etc/passwdclass
說明 grep 將在文件 /etc/passwd 下搜索 模板tom。若是成功,若是成功搜索的行將顯示在屏幕上。搜索
grep:
字符匹配
. 匹配任意一個單個字符
[] 匹配[]內任意字符 ,[A-Z]從大寫A 到 Z ,其中 -表明範圍內任意次
posix字符集
[[:digit:]] 數字
[[:lower:]] 小寫字母
[[:upper:]] 大寫字母
[[:space:]] 空格
[[:punct:]] 標點符號
[[:alpha:]] 字母(大寫+小寫)
[[:alnum:]] 數字+字母
次數匹配
* 匹配任意次
\? 匹配0次或1次
\{m,\} m次, 最少m次
\{0,n\} 最多n次
\{m,n\} 最多n次,最少m次
\是轉義字符
grep 「\.5」
grep '5\..'
grep 「\.5」 表示打印包含字符串「.5」的行
用法
\. , \? , \(,\) , \{,\}
位置匹配
^ 行首錨定
$ 行尾錨定
分組
\(\)
把分組內的數據,保存到內存中,方便引用
引用
\(\)...\(\) $1$2
引用分組中 的內容,$1 表示引用第一個分組 ,$2 第二個分組
grep案例:
grep 「^【we】」 表示打印全部w或者e開頭的行。^表示 定詞首,括號裏的一個字符被匹配。
grep 「^【we】$」 表示打印全部只有w或者e。^表示 錨定詞首,$表示錨定詞尾
grep 「【a-z】\{9\}」 表示打印帶每一個字符串帶有9個連續字母的行
grep 「\bair 」 表示打印 文件中有air單詞的行 \b 是單詞邊界付
grep "aa*" 表示 打印 文件 中全部 帶 一個 或者 多個 a 。*表示0個或者多個
grep 「\<air\> 」 表示 打印 包含 air 的 行 。\< 表示是單詞的開頭 , \ >單詞結尾
grep -i 「^p.*」 表示打印,不區分大小寫,以P開頭,的任意字符的行