awk, чтобы удалить строки со строкой ... что если строка содержит возврат строки? - PullRequest
0 голосов
/ 14 мая 2018

Попытка вырезать строки в файле, содержащем несколько строк, это работает отлично:

awk '!/string1/string\ 2/' file.txt > file.filtered.txt

Теперь мне нужно добавить строку, которая включает в себя «string3» в конце любой строки.

Можно ли добавить строку, содержащую возврат строки?

Я пробовал эти итерации, но ни одна из них не работала:

awk '!/string1/string\ 2/string3\n/' file.txt > file.filtered.txt

и

awk '!/string1/string\ 2/string3\\n/' file.txt > file.filtered.txt

Например, мы хотим удалить строки, заканчивающиеся следующим образом:

YYYY-MM-DD HH:MM:SS criteria=value, criteria=value, tag=ABC

Но не удалять строки, заканчивающиеся следующим образом:

YYYY-MM-DD HH:MM:SS criteria=value, criteria=value, tag=ABC (123)

Мысли?

TIAДон

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Спасибо, это сработало отлично ... вы, ребята, бесценны!

awk '!/string1|string\ 2|string3$/'
0 голосов
/ 14 мая 2018

Сначала обратите внимание: ваш пример не имеет смысла и даст вам всевозможные ошибки из awk (синтаксические ошибки, «обратная косая черта не последний символ в строке», «неожиданный перевод строки» и т. Д.). Я полагаю, вы действительно имели в виду

awk '!/string1|string 2/'

, который удалит строки, соответствующие string1 или string 2. Это просто обычные регулярные выражения, поэтому, если вы хотите сопоставить что-либо только в конце строки, используйте $:

awk '!/string1|string 2|string3$/'

, который удалит любую строку, содержащую string1 или string 2 или заканчивающуюся string3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...