将输出发送到终端之前进行排序

将输出发送到终端之前进行排序

我有下面的脚本,可以获取黑名单中某些 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

只需将最终更改donedone | sort -nr

这将通过管道对循环的输出进行排序for,并且不需要临时文件。

相关内容