web-dev-qa-db-fra.com

Pourquoi mon modèle awk ne correspond-il pas aux arguments de configuration de nginx -V?

J'essaie d'obtenir uniquement les arguments de configuration de nginx compilé sur Ubuntu 14.04 à l'aide d'une ligne de commande.

Lancer /usr/local/nginx/sbin/nginx -V nous donne:

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

Ce qui a du sens.

Alors maintenant, je veux couper cette ligne pour avoir juste:

--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

Après avoir regardé en ligne, il semble que soit

/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 '\\-\\-'

Mais ils produisent tous la même chose que nginx -V

Qu'est-ce que je comprends mal?

5
Seraphim

Il y a : utilisé sur chaque ligne, vous pouvez donc traiter la ligne comme plusieurs parties séparées par :, et dans votre cas, vous voulez un deuxième champ où la chaîne configure arguments apparaît:

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

Comme mentionné dans les commentaires sous la question, le résultat de -V est renvoyé dans le flux d'erreur. Nous avons donc dû le faire passer dans le flux stdout (c'est ce que 2>&1 fait)

6
Sergiy Kolodyazhnyy

Il est possible que la sortie passe à l'erreur standard. Vous devez le rediriger:

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