porque este simples script sed não funcionou “nginx -V 2 & 1 | sed -r 's / - / \\ n / g' ”

1

a saída de "nginx -V" é uma bagunça.

nginx version: nginx/1.9.3 (Ubuntu) built with OpenSSL 1.0.2d 9 Jul 2015 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-

Então, eu escrevo um script simples, redireciono a saída err para stdout e divido a linha inteira:

nginx -V 2>&1 | sed -r 's/--/\n/g'

não funcionou.

nginx -V 2>&1 | sed -r s/--/\n/g

isso funciona, só não sei porque.

    
por lovespring 22.02.2016 / 19:33

1 resposta

2

Só para testar:

$ echo "configure arguments: --with-cc-opt=" | | sed -r 's/--/\n/g'

Não funciona. Mas isso:

$ echo "configure arguments: --with-cc-opt=" | sed -r 's/--/\n/g'

funciona. Como isso, também:

$ echo "configure arguments: --with-cc-opt=" | sed -r s/--/\n/g

Em suma: O '\n' não funciona, é interpretado como uma barra invertida \ e n . Remover qualquer um dos mecanismos de cotação corrige o problema.

    
por 22.02.2016 / 19:58

Tags