awk式を使用して、角かっこ間のすべての値をキャプチャできます。
'NR>1{print $1}' RS='(' FS=')'
しかし、具体的に一致するのに問題があります。行番号ではなく文字列に一致させたい。 awkがこれを行うことができるかどうかはわかりません。
元のファイルの内容は
if ($remote_addr ~ ^(1.2.3.4|5.6.7.8)$) {
set $maintenance off;
}
if ($maintenance = on) {
return 503;
}
さまざまな順序で複数の括弧があります。
1.2.3.4|5.6.7.8
この行からコンテンツを抽出する必要があります。
if ($remote_addr ~ ^
(または含まれている行のみ$remote_addr
)。
ベストアンサー1
1行で簡単に交換できるので、sedを使って行います。
$ sed -n 's/.*$remote_addr[^(]*(\([^)]*\).*/\1/p' file
1.2.3.4|5.6.7.8
本当にawkを使いたいなら、どんなawkでも使うことができます:
$ awk 'sub(/.*\$remote_addr[^(]*\(/,"") && sub(/).*/,"")' file
1.2.3.4|5.6.7.8