Как использовать несколько параметров для grep (в режиме live)?

Например, когда я это делаю

sudo tcpdump | grep -E '.dev:8888|ads' | grep -v 'adsl' 

Выход ALL по какой-либо причине подавляется, ничего не отображается, если я ads.google.com к ads.google.com например, он показывает, когда я ads.google.com grep -v , поэтому базовая команда работает.

Однако, если я попытаюсь создать файл, содержащий:

 test test2 

и do grep -E 'test|test2' | grep -v 'test2' grep -E 'test|test2' | grep -v 'test2' Я получаю желаемый результат ( test ). Так в чем же разница, когда он постоянно обновляется, и как я могу использовать несколько опций с grep для изменения вывода?

One Solution collect form web for “Как использовать несколько параметров для grep (в режиме live)?”

У вас может возникнуть проблема с буферизацией строк. Поручите tcpdump и промежуточную команду grep (ов), чтобы выровнять их выходные данные следующим образом:

sudo tcpdump -l | grep --line-buffered -E '.dev:8888|ads' | grep -v 'adsl'

См. Также Отключение буферизации в трубе для общих решений, если эти параметры команды недоступны.

  • Используйте команду grep и найдите
  • Очень странное поведение с grep и IFS
  • как выбрать файлы в каталоге с булевым оператором AND
  • Как искать текст в сжатых файлах и получать только имя файла
  • Найти последнее появление строки в нескольких файлах
  • Grep для строки в файле без использования трубы
  • выделение параметров с помощью grep
  • Многострочное Regexp (grep, sed, awk, perl)
  • Получите часть строки до последней косой черты
  • Возврат только части строки после соответствующего шаблона
  • Задача сравнения регулярных выражений / шаблонов для извлечения данных
  • Поиск подстроки в файлах в подкаталогах с помощью одной встроенной команды?
  • Linux и Unix - лучшая ОС в мире.