Я не понимаю, почему первые два - совпадение / попадание, а третье - промах?
-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 $?