Выводить только указанные c строк в unix - PullRequest
1 голос
/ 17 июня 2020

Я пытаюсь удалить строки из вывода, содержащие «xyz» в 1-м столбце, используя awk как

grep -H --with-filename "Rule" *| awk '$1!=" \*xyz\* "{print $0}'

, но у меня ничего не получается.

Например, после выполнения grep -H --with-filename "Rule" я получаю результат как

file_xyz.log abc p12r
file1.log asd ef23t
fi_xyz.log gbc or26r
file1.log asd ef2t

, но я хочу удалить все строки, содержащие xyz.

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Некоторые примечания по вашему вопросу:

  1. То, что у вас есть, не очень близко к действительному awk синтаксису, вы должны найти введение в awk учебник или прочитать несколько страниц руководство, чтобы начать работу. Я настоятельно рекомендую всем получить книгу Effective Awk Programming, 4th Edition, by Arnold Robbins.
  2. Взглянув на справочную страницу grep, вы узнаете, что -H и --with-filename - это краткая и длинная версии одного и того же варианта - вы не нужно использовать оба, только один из них.
  3. Строка Rule нигде не появляется в выводе, который вы получите, когда grep-ing для Rule и grep -H выведет a : после имени файла, пока вы показываете пробел - убедитесь, что ваш ввод, вывод и код согласованы и верны, когда задаете вопрос.
  4. Подход, который вы пытаетесь использовать, не удастся для имен файлов которые содержат пробелы.
  5. Вам никогда не понадобится grep, если вы используете awk.

Это, вероятно, все, что вам нужно:

awk '(FILENAME !~ /xyz/) && /Rule/{print FILENAME, $0}' *

но в некоторых оболочках также есть способы (см. https://unix.stackexchange.com/q/164025/133219 и https://unix.stackexchange.com/q/335484/133219 для bash примеров), чтобы указать шаблон подстановки, который исключает некоторые строки, чтобы вы никогда их не открывали в первую очередь искать внутри.

0 голосов
/ 17 июня 2020

попробовать

grep -H --with-filename "Rule" *| awk '$1 !~ /xyz/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...