Piping sed / grep output não funciona

0

Se eu executar os comandos abaixo, somente out1 terá saída, os out2 e out3 estarão vazios.

# 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

Por que o redirecionamento de stdout de sed ou grep falha, mas é executado sem redirecionar os trabalhos?

    
por Chris 05.04.2016 / 00:28

2 respostas

1

Experimente os sistemas sed -u ( -l nos sistemas BSD / Mac OSX) e grep --line-buffered .

    
por 05.04.2016 / 00:47
1

Parece que você espera que out2 e out3 sejam gravados em tempo real, mas sed e grep no canal aguardam o EOF. E nada falha aqui.

Mate openssl de outro console e verifique se você tem resultados corretos em out2 e out3 .

    
por 05.04.2016 / 00:41