我有一个文件,每行都包含子域名。我想使用 bash 脚本将这些子域名转换为 IP。我的文件:
subdomain1.example.com
subdomain2.example.com
...
我想要一个包含这些 IP 的新文件。
我想用循环来完成这个。
for line in $(cat subdomains.txt)
do
.......
done < ip.txt
那部分应该是什么........
?
答案1
使用单个awk
命令:
awk '{cmd="host "$0; cmd|getline $0; print $1,$NF;close(cmd)}' infile
解释:
这里我们将 shell 命令设置为host $0
并分配给名为的变量cmd
。然后cmd |getline $0
我们调用该命令从管道使用 getline它将awk
输入文件中的行传递infile
到cmd
,然后打印第一个和最后一个字段(域和 IP)。最后我们需要关闭我们打开的命令,所以我们使用close(cmd)
将其关闭。
输入:
askubuntu.com
stackexchange.com
结果:
askubuntu.com 11.22.33.44
stackexchange.com 55.66.77.88
答案2
for line in $(cat subdomains.txt); do
nslookup $line | grep Address | grep -v "#53" | awk {'print $2'} >> ips.txt
done