grep常見用法總結
來源:懂視網
責編:小采
時間:2020-11-09 14:50:58
grep常見用法總結
grep常見用法總結:grep -E l\{2,\} 2.txtgrep -E h(ell|a)o test.txtgrep [a-z]\{5,\} test.txtgrep -xf a.txt b.txt //查詢a與b共同存在的行grep -vxf b.txt a.txt //查詢a的行不在b文件里面的,就是a比b多出來的行 grep -v ^h test.txt
導讀grep常見用法總結:grep -E l\{2,\} 2.txtgrep -E h(ell|a)o test.txtgrep [a-z]\{5,\} test.txtgrep -xf a.txt b.txt //查詢a與b共同存在的行grep -vxf b.txt a.txt //查詢a的行不在b文件里面的,就是a比b多出來的行 grep -v ^h test.txt

grep -E l\{2,\} 2.txtgrep -E h(ell|a)o test.txtgrep [a-z]\{5,\} test.txtgrep -xf a.txt b.txt //查詢a與b共同存在的行grep -vxf b.txt a.txt //查詢a的行不在b文件里面的,就是a比b多出來的行 grep -v ^h test.txt //顯示非以h開發的 grep -E ^(h|y) tes
grep -E 'l\{2,\}' 2.txt
grep -E 'h(ell|a)o' test.txt
grep '[a-z]\{5,\}' test.txt
grep -xf a.txt b.txt //查詢a與b共同存在的行
grep -vxf b.txt a.txt //查詢a的行不在b文件里面的,就是a比b多出來的行
grep -v '^h' test.txt //顯示非以h開發的
grep -E '^(h|y)' test.txt //-E支持擴展正則,相當于egrep
grep -A 1 'hello' test.txt //除了顯示匹配到的行也顯示它之后的一行
grep -B 1 'hello' test.txt //除了顯示匹配到的行也顯示它之前的一行
grep -C 1 'hello' test.txt //除了顯示匹配到的行也顯示它之前和之后的一行
grep -r "hello" xx //在xx目錄查找
grep -c //統計匹配的行數
grep -n //顯示行號
grep -v '^hello' test.txt //顯示不以hello開頭的行
--很聰明的寫法,第一位不以h開發,第二位不以e開發。。
grep '^[^h]\|^.[^e]\|^..[^l]\|^...[^l]\|^....[^o]'
[options]主要參數:
-c:只
輸出匹配行的計數。
-I:不區分大 小寫(只適用于單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
命令正則表達式:
. 匹配單個字符 如..X yiX能查出來
^ 匹配行首 ^d 每行第一個字符為d
$ 匹配行尾 T$ 每行最后一個字符為T
* 匹配任意字符串
\ 屏蔽特殊字符的含義
A\{2\}B 字母A出現兩次
A\{2,\}B 至少出現兩次
A\{2,4\}B 出現2到4次
[0-9]\{4\}xx[0-9]\{4\} 前四個是數字,中間是xx,后四個是數字
pattern正則表達式主要參數:
\: 忽略正則表達式中特殊字符的原有含義。
^:匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\<:從匹配正則表達 式的行開始。
錨定單詞的開始,如:/\
:到匹配正則表達式的行結束。
[ ]:單個字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的單個字符。
* :有字符,長度可以為0
[^]
匹配一個不在指定范圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。
+
匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。
?
匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價于 {0,1}。
(?=pattern)
正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。
例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始。
(?!pattern)
負向預查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始
(?:pattern)
匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用 "或" 字符 (|) 來組合一個模式的各個部分是很有用。
例如, 'industr(?:y|ies) 就是一個比 'industry|industries' 更簡略的表達式
pcregrep 'Windows (?=2000|95|98|NT)' test.txt //Windows后面是2000或95..
pcregrep 'Windows (?!2000|95|98|NT)' test.txt //Windows后面非2000,95,98等
pcregrep 'Windows (?:95|98|NT|2000)' test.txt //與第一種一樣
egrep:
為 grep 的擴充版本, 改良了許多傳統 grep 不能或不便的操作. 比方說:
- grep 之下不支持 ? 與 + 這兩種 modifier, 但 egrep 則可.
- grep 不支持 a|b 或 (abc|xyz) 這類"或一"比對, 但 egrep 則可.
fgrep:
不作 RE 處理, 表達式僅作一般字符串處理, 所有 meta 均失去功能.
pcregrep:
pcregrep - a grep with Perl-compatible regular expressions , perl正則,是最流行和規范的
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
grep常見用法總結
grep常見用法總結:grep -E l\{2,\} 2.txtgrep -E h(ell|a)o test.txtgrep [a-z]\{5,\} test.txtgrep -xf a.txt b.txt //查詢a與b共同存在的行grep -vxf b.txt a.txt //查詢a的行不在b文件里面的,就是a比b多出來的行 grep -v ^h test.txt