Classificando antes de enviar a saída para o terminal

3

Eu tenho abaixo do script que recebo detalhes de alguns IPs em uma lista negra.

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

Funciona, mas quero classificar a saída por seção de país.

Agora posso simplesmente ir:

bash check.sh | sort -nr

e funciona bem.

Mas eu quero fazer a classificação antes de enviar o resultado para o terminal. Em outras palavras, a classificação deve ser feita dentro de check.sh e, em seguida, deve ser enviada para o terminal.

Como posso conseguir isso no script bash?

    
por NecNecco 10.07.2016 / 20:27

1 resposta

8

Basta alterar a% finaldone para done | sort -nr

Isso classificará a saída do loop for por meio de um canal e não precisará de arquivos temporários.

    
por 10.07.2016 / 20:34

Tags