Рейтинг:0

Я хочу исключить определенные слова из результатов при передаче хвоста в grep

флаг fi

Я использую "tail -f /var/log/fail2ban.log -f /var/log/ufw.log | grep -e Ban -e BLOCK -e ALLOW" (без кавычек), и это работает, но я хочу исключить результаты, в которых есть слова UDP и ICMP. Когда я пытаюсь выполнить "tail -f /var/log/fail2ban.log -f /var/log/ufw.log | grep -e Ban -e BLOCK -e ALLOW -v UDP -v ICMP", я получаю сообщение об ошибке "grep: UDP: нет такого файла или каталога». Кажется, что использование -v для исключения слов не работает при конвейерной передаче.

введите описание изображения здесь

Рейтинг:0
флаг vn

Вы можете просто передать первый вывод другому grep и использовать его как еще один «фильтр», например:

хвост -f /var/log/fail2ban.log -f /var/log/ufw.log | grep "Запретить\|БЛОКИРОВАТЬ\|РАЗРЕШИТЬ" | grep -v "UDP\|ICMP"

Обратите внимание, что grep может складывать разные строки, даже регулярное выражение, когда вы используете двойные кавычки, разделяя их вертикальной чертой «|» но вы должны экранировать символ с помощью «\», чтобы не получить странные вещи.

Параметр -v буквально говорит в человеке

-v, --инвертировать-совпадение Инвертируйте смысл совпадения, чтобы выбрать несовпадающие строки.

Таким образом, кажется, что совпадение, которое вы определяете, просто инвертируется, поэтому вы не можете его параметризовать.

Как и в синопсисе, вы можете указать 3 типа параметров. Опции, выкройка и файл.

Варианты в целом всегда начинаются с - или -- и вы можете поставить их кучу.

Вы можете определить отдельный шаблон или определенный тип шаблона с помощью -e или -f или без них.

И всегда последним должен быть файл/ы или каталог (каталогам нужен параметр -R для рекурсии, или вы можете просто указать каталог/*). если не указано, он попытается прочитать стандартный ввод, как вы это делаете.

   СИНТАКСИС
   grep [ОПЦИЯ...] ШАБЛОНЫ [ФАЙЛ...]
   grep [ОПЦИЯ...] -e ШАБЛОНЫ... [ФАЙЛ...]
   grep [ВАРИАНТ...] -f ФАЙЛ_ШАБЛОНА... [ФАЙЛ...]

Во всяком случае, это уже ответил более простым способом

Greg Azar avatar
флаг fi
Ваше решение имеет смысл, оно логично и разумно, но когда я попробовал его, я не получил ни результатов, ни ошибок. Просто подсказка.
Angel Porlan avatar
флаг vn
Затем вы должны проверить, действительно ли вы не получаете желаемых совпадений, и настроить фильтр.
Рейтинг:0
флаг fi

У меня есть обходной путь для этого, используя 2 сеанса ssh. Я передаю результаты первого оператора grep в файл, а затем во втором сеансе ssh я фиксирую результаты, переданные в grep. (1-й сеанс ssh) - tail -f /var/log/fail2ban.log -f /var/log/ufw.log | grep -v ICMP >/home/user/staging (2-й сеанс ssh) - tail -f /home/user/staging | grep -e ALLOW -e BLOCK немного необычно, но работает.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.