ファイル内のホスト名を見つけてIPアドレスに置き換えます。

ファイル内のホスト名を見つけてIPアドレスに置き換えます。

私はこのように見える約12300行の巨大なファイルを持っています。

001.domain.com=001.somedomain.com:10001
002.domain.com=002.somedomain.com:10002
003.domain.com=003.somedomain.com:10003

完了したら、ファイルが次のように見えるようにしたいと思います。

001.domain.com=IP_Address_of_001.somedomain.com:10001
002.domain.com=IP_Address_of_002.somedomain.com:10002
003.domain.com=IP_Address_of_003.somedomain.com:10003

したがって、デフォルトでは=記号の後のホスト名を見つけてそれをIPアドレスに置き換える必要があります。

誰もが私を正しい方向に指すことができればとても感謝します。

ベストアンサー1

これは、sedを使用してホスト名を抽出し、digを使用してIPを取得し、再びsedを使用して置き換えます。交換内容を新しいファイルに出力します。

$ while read line; do 
    hostname=$(echo "$line" | sed "s/.*=\(.*\):.*/\1/g")
    ip=$(dig +short $hostname | head -n1)
    echo "$line" | sed "s/\(.*=\).*\(:.*\)/\1${ip}\2/g"
done < file.txt > new_file.txt

おすすめ記事