在文件中查找主机名并将其替换为 IP 地址

Cur*_*Sam 4 sed shell-script text-processing cut

我有一个大约 12300 行的大文件,看起来与此类似。

001.domain.com=001.somedomain.com:10001
002.domain.com=002.somedomain.com:10002
003.domain.com=003.somedomain.com:10003
Run Code Online (Sandbox Code Playgroud)

我希望文件在完成后看起来像这样

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
Run Code Online (Sandbox Code Playgroud)

所以基本上我需要在= 符号后找到并替换主机名与 IP 地址。

如果有人能指出我正确的方向,我将不胜感激。

Kyl*_*yle 7

这使用 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
Run Code Online (Sandbox Code Playgroud)