В первую очередь, удаляют , зарезервированное слово в JavaScript, я удивлен, что это даже выполняется для Вас (Когда я тестирую его в Firefox, я получаю синтаксическую ошибку)
, Во-вторых, Ваш HTML выглядит странным - там причина, Вы закрываете вводные теги привязки с />
вместо всего >
?
Вы не можете разумно использовать варианты «все» или «это плюс любой из этих», потому что grep
не поддерживает просмотр вперед. Используйте Perl. Для случая «все» это egrep '(str1 | str2 | str3)' файл
.
Необоснованный способ выполнить случай «все»:
egrep '(str1.*str2.*str3|str3.*str1.*str2|str2.*str1.*str3|str1.*str3.*str2)' file
т.е. вы создаете перестановки . Это, конечно, нелепая вещь.
Для «это плюс любой из них» аналогично:
egrep '(str1.*(str2|str3)|(str2|str3).*str1)' file
Лично я делаю это на perl, а не пытаюсь что-то сколотить с помощью grep.
Например, для первого:
while (<FILE>)
{
next if ! m/pattern1/;
next if ! m/pattern2/;
next if ! m/pattern3/;
print $_;
}
Это похоже на три вопроса. Самый простой способ связать такие выражения вместе - использовать несколько каналов. В этом нет ничего постыдного, особенно потому, что регулярное выражение (с использованием egrep ) было бы неуклюжим, поскольку вы, кажется, подразумеваете, что хотите независимость от порядка.
Итак, по порядку,
grep str1 | grep str2 | grep str3
egrep '(str1 | str2 | str3)'
grep str1 | egrep '(str2 | str3)'
вы можете создать форму "and" независимо от порядка, используя egrep, но я думаю, вам будет легче запомнить независимые от порядка ands, используя конвейерные greps и независимые от порядка or с использованием регулярных выражений.