grep egrep несколько-строк

В первую очередь, удаляют , зарезервированное слово в JavaScript, я удивлен, что это даже выполняется для Вас (Когда я тестирую его в Firefox, я получаю синтаксическую ошибку)

, Во-вторых, Ваш HTML выглядит странным - там причина, Вы закрываете вводные теги привязки с /> вместо всего >?

14
задан João Silva 3 October 2009 в 20:49
поделиться

3 ответа

Вы не можете разумно использовать варианты «все» или «это плюс любой из этих», потому что 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
8
ответ дан 1 December 2019 в 07:12
поделиться

Лично я делаю это на perl, а не пытаюсь что-то сколотить с помощью grep.

Например, для первого:

while (<FILE>)
{
   next if ! m/pattern1/;
   next if ! m/pattern2/;
   next if ! m/pattern3/;

   print $_;
}
-2
ответ дан 1 December 2019 в 07:12
поделиться

Это похоже на три вопроса. Самый простой способ связать такие выражения вместе - использовать несколько каналов. В этом нет ничего постыдного, особенно потому, что регулярное выражение (с использованием egrep ) было бы неуклюжим, поскольку вы, кажется, подразумеваете, что хотите независимость от порядка.

Итак, по порядку,

  1. grep str1 | grep str2 | grep str3

  2. egrep '(str1 | str2 | str3)'

  3. grep str1 | egrep '(str2 | str3)'

вы можете создать форму "and" независимо от порядка, используя egrep, но я думаю, вам будет легче запомнить независимые от порядка ands, используя конвейерные greps и независимые от порядка or с использованием регулярных выражений.

28
ответ дан 1 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: