我有下面的脚本,可以获取黑名单中某些 IP 的详细信息。
检查.sh
blacklist_ips='
5.56.148.140
94.73.159.66
113.171.224.169
107.150.42.226
195.159.233.44
89.19.7.58
'
for ipx in $blacklist_ips
do
country=`whois $ipx | grep -i country | tail -1 | awk '{print $2}'`
hostx=`host $ipx |awk '{print $NF}'|sed "s/\.$//"`
printf '%s %s %s' $country $ipx $hostx
printf '\n'
done
它可以工作,但我想按国家/地区对输出进行排序。
现在我可以简单地去:
bash check.sh | sort -nr
并且工作正常。
但我想在将结果发送到终端之前进行排序。换句话说,排序应该在内部完成check.sh
,然后发送到终端。
我怎样才能在 bash 脚本中实现这一点?
答案1
只需将最终更改done
为done | sort -nr
这将通过管道对循环的输出进行排序for
,并且不需要临时文件。