Grep Pattern и следующее слово

У меня есть текстовый файл с такими строками (только две последние строки):

1 sometext Pattern 2 sometext Pattern 5Asda5} 3 sometext Pattern asd2-asd 4 sometext Pattern ad 5 sometext Pattern foobar 6 sometext Pattern {asd 7 Pattern Pattern something 123asd 8 Pattern sometext asd 9 Pattern 5h{1,2}b 

Мне нужно найти каждую строку с «Шаблон» в качестве последнего слова. Слово в этом случае определяется как строка с буквами и дефисами. Могут быть ведущие пробелы или пробелы, следующие за строкой (например: Pattern \ t \ t \ t \ t \ t $)

  • Как извлечь конкретный текст из файла журнала с помощью linux-терминала?
  • grepping переменная и добавление 1 к ней
  • Есть ли способ, с помощью которого я могу рекурсивно рекурсивно перебирать все файлы в текущем каталоге, чтобы найти шаблон, а затем распечатать его в порядке от максимума до минимума?
  • grep caret, похоже, не имеет эффекта
  • grep для нескольких строк в файлах, а затем список файлов в порядке размера
  • Почему эта команда не сортируется на основе индекса uniq?
  • Мой взгляд на это

     egrep '(\bPattern\b +[^a-zA-Z\-]{2,} *$)|(\bPattern\b *$)' file.txt 

    найти все строки с шаблоном, за которым следуют пробелы и не-слово в конце или с шаблоном в конце. Но первая часть работает не так, как предполагалось. Мне нужен другой способ найти не-слова.

    Не могли бы вы показать мне путь к линии grep 1,2,3,6,9, но не к остальным? Мне нравится держаться подальше от awk, поскольку мы не покрывали его в классе.

  • Поиск шаблона регулярного выражения для чередующегося символьного случая
  • Печать нескольких строк после n-го появления в bash
  • сценарий оболочки для чтения из нескольких файлов параллельно
  • grep, чтобы найти "print" не "#print"
  • Анализ паролей Apache для исключения диапазонов IP-адресов
  • bash найти строки, начинающиеся со строки
  • One Solution collect form web for “Grep Pattern и следующее слово”

    Обратите внимание, что \b , в реализациях grep которые его поддерживают, – это переход между символом слова (alnum и underscore) и символом без слова (или наоборот). Итак, \bPattern\b будет соответствовать, например, в foo-Pattern.bar .

    Если вы ищете слово с разметкой в ​​виде пустого поля, вы не можете использовать \b .

    Здесь вам кажется, что вы ищете Pattern ограниченным разделителем, за которым следует список нулевых или более строк с разделителями, которые имеют символы, отличные от букв, и - , поэтому:

     non_word='([^[:blank:]]*[^[:blank:][:alpha:]-][^[:blank:]]*)' grep -E "(^|[[:blank:]])Pattern([[:blank:]]+$non_word)*[[:blank:]]*$" - non_word='([^[:blank:]]*[^[:blank:][:alpha:]-][^[:blank:]]*)' grep -E "(^|[[:blank:]])Pattern([[:blank:]]+$non_word)*[[:blank:]]*$" 
    Linux и Unix - лучшая ОС в мире.