我不明白为什么前两个是一场比赛/命中,但第三个是一个小姐?
-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#
有一件事,尽pipe这些单词分别位于不同的行上,也许这就是为什么?
*更新*
-bash-3.2# pcregrep -M -q '.*languager.*\n.*Preferences.*' 1361492805.M171838P41834.mx1.alexus.biz\,S\=12921\:2\,Sijm ; echo $? 1 -bash-3.2#
有一件事,尽pipe这些单词分别位于不同的行上,也许这就是为什么?
是。 您必须插入\n并使用-M选项来search跨越行边界的模式:
pcregrep -M -q '.*languager.*\n.*Preferences.*' input.file; echo $?
不,他们在彼此分开几行(我没有确切的数量和/或可以改变,所以我需要它的正则expression式)
好。 如果是的话,试试这个:
pcregrep -M -q '.*languager(\n|.)*Preferences.*' input.file; echo $?