web-dev-qa-db-ja.com

私のawkパターンがnginx -Vのconfigure引数と一致しないのはなぜですか?

コマンドラインを使用して、Ubuntu 14.04でコンパイルされたnginxの設定引数のみを取得しようとしています。

/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

理にかなっています。

だから今、私はちょうどこのようにこの行をカットしたい:

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

オンラインで見ると、次のように見えます

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

各行で:が使用されているため、行を:で区切られたいくつかの部分として扱うことができ、場合によってはconfigure arguments文字列が表示される2番目のフィールドが必要です。

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

質問の下のコメントで述べたように、-Vの出力はエラーストリームに送られるため、stdoutストリーム(2>&1が行うこと)

6

出力が標準エラーになる可能性があります。リダイレクトする必要があります。

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