デバイス名をgrepし、次の値を見つけます。

デバイス名をgrepし、次の値を見つけます。

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」を検索して次の行を印刷します。このソリューションがあなたに役立つことを願っています。

おすすめ記事