findコマンドの出力があります。
abc,10.11.13.14,def,1.2.3.4,geh,6.7.54.23
そのうち、abc、def、geh はデバイス名で、長さに制限はなく、残りはデバイスに属する IP アドレスです。abc,10.11.13.14
装置と同じですabc
。 IPはコンマ区切り文字の横になければなりません。
デバイス名を見つけるためにgrepを使用するとき、sed、grep、またはawkを使用して関連IPをどのように印刷しますか?つまり、デバイス名の横にIPを表示したいと思います。
ベストアンサー1
私はawkに慣れているので、awkで2つの解決策を提案したいと思います。
ソリューション1
$ echo abc,10.11.13.14,def,1.2.3.4,geh,6.7.54.23 | awk -F, '{for (i=1; i<NF; i+=2) if ($i == "def") print $(i+1)}'
1.2.3.4
この場合は、コンピュータ名「def」を探しており、見つかった場合は次の列を印刷します。
ソリューション2
$ echo abc,10.11.13.14,def,1.2.3.4,geh,6.7.54.23 | tr , \\n | awk '/def/ {getline;print}'
1.2.3.4
このソリューションでは、tr
コマンドを使用してコンマを新しい行に変換し、「def」を検索して次の行を印刷します。このソリューションがあなたに役立つことを願っています。