Sto cercando di ottenere solo gli argomenti di configurazione di nginx compilato su Ubuntu 14.04 usando una riga di comando.
Esecuzione di /usr/local/nginx/sbin/nginx -V
ci 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
Il che ha senso.
Quindi ora voglio tagliare questa linea per avere solo:
–con-http_ssl_module –con-http_stub_status_module –add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d –con-http_sub_module
Dopo aver cercato online, sembra che entrambi
/usr/local/nginx/sbin/nginx -V | sed -n -e '/arguments/ s/.*\: *//p'
o
/usr/local/nginx/sbin/nginx -V | awk -F":" '{print $NF}'
o
/usr/local/nginx/sbin/nginx -V | egrep -o '\\-\\-'
Ma hanno tutti lo stesso output di nginx -V
Cosa ho capito di sbagliato?
Risposta accettata:
C'è :
utilizzato su ogni riga , quindi puoi trattare la riga come più parti separate da :
e nel tuo caso vuoi il 2° campo dove configure arguments
appare la stringa:
/usr/local/nginx/sbin/nginx -V 2>&1 | awk -F ':' '/configure arguments/{print $2}'
Come è stato menzionato nei commenti sotto la domanda, l'output di -V
va al flusso di errore, quindi abbiamo dovuto farlo passare a stdout
stream (che è ciò che 2>&1
fa)