Regex
pcregrep 不匹配正則表達式(多行?)
我不明白為什麼前兩個是匹配/命中,而第三個是未命中?
-bash-3.2# cat 1361492805.M171838P41834.mx1.alexus.biz\,S\=12921\:2\,Sijm | pcregrep -q '.*languager.*' ; echo $? 0 -bash-3.2# cat 1361492805.M171838P41834.mx1.alexus.biz\,S\=12921\:2\,Sijm | pcregrep -q '.*Preferences.*' ; echo $? 0 -bash-3.2# cat 1361492805.M171838P41834.mx1.alexus.biz\,S\=12921\:2\,Sijm | pcregrep '.*languager.*Preferences.*' ; echo $? 1 -bash-3.2# cat 1361492805.M171838P41834.mx1.alexus.biz\,S\=12921\:2\,Sijm | grep -no 'language' 70:language -bash-3.2# cat 1361492805.M171838P41834.mx1.alexus.biz\,S\=12921\:2\,Sijm | grep -no 'Preferences' 149:Preferences -bash-3.2#
一件事雖然這些詞中的每一個都位於不同的行,也許這就是為什麼?
*** 更新 ***
-bash-3.2# pcregrep -M -q '.*languager.*\n.*Preferences.*' 1361492805.M171838P41834.mx1.alexus.biz\,S\=12921\:2\,Sijm ; echo $? 1 -bash-3.2#
一件事雖然這些詞中的每一個都位於不同的行,也許這就是為什麼?
是的。您必須插入一個
\n
並使用-M
選項來搜尋跨越線邊界的模式:pcregrep -M -q '.*languager.*\n.*Preferences.*' input.file; echo $?
不,它們彼此相隔幾行(我沒有確切的計數和/或可以更改,所以我需要正則表達式)
好的。如果是這樣,試試這個:
pcregrep -M -q '.*languager(\n|.)*Preferences.*' input.file; echo $?