Intereting Posts
Как запустить mod_mono в Debian Jessie (пакет libapache2-mod-mono отсутствует)? Почему bash путает эту предельную строку HEREDOC как команду? Слияние LXDE и LXQt – в чем суть? crontab для команды запускать каждую неделю и три месяца? tty не изменяется правильно Насколько дорогостоящим является поиск без учета регистра по сравнению с поиском с учетом регистра? Разрешения для корневой папки в файловых системах * nix отличаются от других каталогов? awk для объединения строк на основе значений ячеек Как защитить / защитить журналы журналов log_input / log_output «sudo»? Chroot пользовательский выход из тюрьмы Сценарий оболочки работает при сохранении с помощью nano, но не при сохранении с помощью Notepad ++ Как я могу сказать, что xfs_repair застрял или все еще работает? Не удалось установить пакет php-posix на CentOS 5.6 Записать вывод оболочки в документ MS Word Обновление GCC на Debian Wheezy для поддержки возможностей C ++ 11

Найти символы в файле

Мне нужно найти строки в текстовом файле, у которых есть хотя бы один x и по крайней мере два y s.

Я попробовал следующее:

 grep -E "x.*y{2}" file.txt 

Этот метод не работал. Есть ли другой способ сделать это?

Вы можете использовать два последовательных вызова grep:

 grep 'x' file.txt | grep 'y.*y' 

или один с тремя возможностями:

 grep -E 'x.*y.*y|y.*x.*y|y.*y.*x' file.txt 

Если их можно найти в любом порядке, я сомневаюсь, что вы можете получить что-нибудь меньшее, чем ответ @ jofel. Если вы можете использовать другие инструменты, вот несколько вариантов:

  1. Perl

     perl -pe ' /x/ && /y.*y/ || next' file 
  2. AWK

     awk '/x/ && /y.*y/' file 

Все, что я могу придумать, должно было бы использовать трехсторонний подход @jofel.