Por que o meu padrão awk não corresponde aos argumentos de configuração do nginx -V?

5

Eu estou tentando obter apenas os argumentos configure do nginx compilado no Ubuntu 14.04 usando uma linha de comando.

A execução de /usr/local/nginx/sbin/nginx -V nos dá:

nginx version: nginx/1.8.1
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d --with-http_sub_module

O que faz sentido.

Então, agora eu quero cortar essa linha para ter apenas:

  

- com-http_ssl_module --with-http_stub_status_module --add-module = /usr/local/src/nginx- goodies-nginx-sticky-module-ng-c78b7dd79d0d --with-http_sub_module

Depois de procurar on-line, parece que

/usr/local/nginx/sbin/nginx -V | sed -n -e '/arguments/ s/.*\: *//p'

ou

/usr/local/nginx/sbin/nginx -V | awk -F":" '{print $NF}'

ou

/usr/local/nginx/sbin/nginx -V | egrep -o '\-\-'

Mas todos eles produzem o mesmo que nginx -V

O que estou entendendo errado?

    
por Seraphim 12.07.2016 / 12:05

2 respostas

6

: usado em cada linha, portanto, você pode tratar a linha como várias partes separadas por : e, no seu caso, você deseja o segundo campo em que configure arguments string aparece:

/usr/local/nginx/sbin/nginx -V  2>&1 | awk -F ':' '/configure arguments/{print }' 

Como foi mencionado nos comentários da pergunta, a saída de -V vai para o fluxo de erros, então tivemos que fazer com que ela fosse para o fluxo stdout (que é o que 2>&1 faz)

    
por Sergiy Kolodyazhnyy 12.07.2016 / 12:12
6

É possível que a saída vá para o erro padrão. Você precisa redirecioná-lo:

/usr/local/nginx/sbin/nginx -V 2>&1 | sed -n -e '/arguments/ s/.*\: *//p'
#                              ~~~~
    
por choroba 12.07.2016 / 12:11