터미널로 보내기 전에 출력 정렬

터미널로 보내기 전에 출력 정렬

블랙리스트에 있는 특정 IP의 세부 정보를 가져오는 다음 스크립트가 있습니다.

check.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임시 파일이 필요하지 않습니다.

관련 정보