Выход трубопровода sed / grep не работает

Если я запустил приведенные ниже команды, то только out1 имеет выход, out2 и out3 пусты.

 # this is just to generate a self-signed certificate openssl genrsa -out /tmp/ssl.key 2048 openssl req -sha256 -new -key /tmp/ssl.key -out /tmp/ssl.csr -subj /CN=localhost openssl x509 -req -days 365 -in /tmp/ssl.csr -signkey /tmp/ssl.key -out /tmp/ssl.crt # works openssl s_server -cert /tmp/ssl.crt -key /tmp/ssl.key -accept 444 > out1 # does not work, but if I run without '> out2' it works openssl s_server -cert /tmp/ssl.crt -key /tmp/ssl.key -accept 446 | sed "s/ACCEPT/ACCEPT445/g" > out2 # does not work, but if I run without '> out3' it works openssl s_server -cert /tmp/ssl.crt -key /tmp/ssl.key -accept 447 | grep ACCEPT > out3 

Почему перенаправление stdout из sed или grep не выполняется, но работает без перенаправления?

2 Solutions collect form web for “Выход трубопровода sed / grep не работает”

Попробуйте sed -u ( -l в системах BSD / Mac OSX) и grep --line-buffered .

Кажется, вы ожидаете, что out2 и out3 будут записаны в реальном времени, но sed и grep в трубке ждут EOF. И здесь ничего не получается.

Убейте openssl с другой консоли и проверьте, есть ли у вас правильные результаты в out2 и out3 .

  • Использование sed для удаления целой строки, если оно содержит только определенный номер
  • Как заменить строку в файлах, используя звездочку в форме поиска
  • Разделить файл журнала по временному диапазону
  • Как вложить глобальные совпадения с sed?
  • Скопируйте первые 2 строки из файла, а затем удалите строки
  • Как использовать команду оболочки, чтобы показывать только первый столбец и последний столбец в текстовом файле?
  • Как удалить строки с пустым первым столбцом?
  • Извлечь файлы csv из пути в несколько файлов в bash
  • как добавить дополнительный символ после поиска слова
  • Извлечь абзац, разделенный на *** с помощью AWK
  • `pwd`, но опустить первые n каталогов
  • Linux и Unix - лучшая ОС в мире.