我正在使用 shell 脚本对 URL 进行 nslookup 以进行多次迭代。我需要检查每个 URL 返回了多少次 IP。
在输出文件中,输出存储为
URL
IP address
使用 uniq -c 命令我在相同 IP 地址相邻时得到计数,但当相同 IP 地址在非相邻行上时不计算
Command is
cat file.log | awk '{print $1}' | uniq -c
这是示例输出
1 url
3 72.51.46.230
现在,如果为特定 URL 返回多个 IP 地址,并且它们位于不相邻的行上,因为我没有运行。的迭代。在这种情况下,uniq-c 命令将不起作用。如果我使用排序选项,它会排序,但我需要为每个 URL 显示上面的输出,即。URL 和下一行包含计数及其 IP 地址。
例如。如果我在 google.com 上执行 nslookup,它将返回多个地址,并且我执行 uniq -c 我得到以下输出。如您所见,IP 地址相同,但计数仅为 1,因为 uniq -c 不适用于非相邻行。
1 74.125.236.64
1 74.125.236.78
1 74.125.236.67
1 74.125.236.72
1 74.125.236.65
1 74.125.236.73
1 74.125.236.70
1 74.125.236.66
1 74.125.236.68
1 74.125.236.71
1 74.125.236.69
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 nslookup: can't resolv 'google.com'
1 74.125.236.70
1 74.125.236.66
1 74.125.236.68
1 74.125.236.71
1 74.125.236.69
我也尝试过使用 AWK,但在这种情况下,输出没有按照我的要求进行格式化。
awk 命令
awk '{a[$0]++}END{for (i in a) printf "%-2d -> %s \n", a[i], i}' file.log
您能否提出一个更好的解决方案来实现这一点 - 以上述格式获取计数和显示?
所需的输出格式是
URL
Count IP address
示例输入文件。
URL1
72.51.46.230
72.51.46.230
google.com
74.125.236.64
74.125.236.78
(null)
nslookup: can't resolv 'google.com'
nslookup: can't resolv 'google.com'
nslookup: can't resolv 'google.com'
nslookup: can't resolv 'google.com'
nslookup: can't resolv 'google.com'
需要的样本输出为
URL1
2 72.51.46.230
google.com
1 74.125.236.64
1 74.125.236.78
1 null
5 nslookup: can't resolv 'google.com'
谢谢你。