Почему мой awk шаблон не соответствует настраивать аргументам nginx-V?

Я пытаюсь получить просто настраивать аргументы скомпилированного nginx на Ubuntu 14.04 с помощью командной строки.

Выполнение /usr/local/nginx/sbin/nginx -V дает нам:

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

Который имеет смысл.

Таким образом, теперь я хочу сократить эту строку, чтобы иметь просто:

- с - http_ssl_module - с - http_stub_status_module - добавлять-модуль =/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d - с - http_sub_module

После взгляда онлайн, это походит также

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

или

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

или

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

Но они все просто производят то же как nginx -V

Что я понимаю неправильно?

5
задан 16 July 2016 в 04:51

2 ответа

Существует : используются на каждой строке, таким образом, можно рассматривать строку как несколько частей, разделенных :, и в случае Вы хотите 2-е поле, где configure arguments строка появляется:

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

, Как был упомянут в комментариях под вопросом, вывод -V переходит к потоку сообщений об ошибках, таким образом, мы должны были заставить его перейти в stdout поток (который является тем, что 2>&1 делает)

6
ответ дан 23 November 2019 в 08:46

Возможно, что вывод переходит к стандартной погрешности. Необходимо перенаправить его:

/usr/local/nginx/sbin/nginx -V 2>&1 | sed -n -e '/arguments/ s/.*\: *//p'
#                              ~~~~
6
ответ дан 23 November 2019 в 08:46

Другие вопросы по тегам:

Похожие вопросы: