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 地址。
如果有人能指出我正确的方向,我将不胜感激。
这使用 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)