É possível classificar para classificar 1 2 3 4..9 em vez de 1 10 11 12 .. 2 20

2

Eu uso este script para descobrir o ip online

#!/bin/sh
set -e

# no args
if [ $# -lt 1 ]; then
    echo "Too few args"
    echo "Options are:"
    echo "-a: Tell me which host is online"
    echo "-b: show only list of ip found"
    exit 1
fi

# too many args
if [ $# -gt 1 ]; then
    echo "$1 option unknown"
    echo "Options are:"
    echo "-a: Tell me which host is online"
    echo "-b: show only list of ip found"
    exit 1
fi



case $1 in
-a)
array1=(
'nmap -sP 192.168.0.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}''
)
for i in ${array1[@]};do echo "Ip $i is online";done
;;
-b)
nmap -sP 192.168.0.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'|sort -fn
;;
*)
    echo "$1 option unknown"
    echo "Options are:"
    echo "-a: Tell me which host is online"
    echo "-b: show only list of ip found"
;;
esac

mas usando -b retorna uma lista como esta

192.168.0.1
192.168.0.11
192.168.0.14
192.168.0.15
192.168.0.17
192.168.0.2
192.168.0.3
192.168.0.44
192.168.0.46
192.168.0.49
192.168.0.50

eu quero listar tipo como este

    192.168.0.1
    192.168.0.2
    192.168.0.3
    192.168.0.11
    192.168.0.14
    192.168.0.15
    192.168.0.22
    192.168.0.44
    192.168.0.46
    192.168.0.49
    192.168.0.50

Alguma sugestão para ordenação?

    
por elbarna 09.10.2016 / 00:28

1 resposta

2

sort de acordo com o quarto campo . separado apenas por:

... | sort -t. -k4,4n
  • -t. define o delimitador de campo de entrada como .

  • - -k4,4n classifica o arquivo de acordo com o quarto campo somente e n implementa a classificação numérica

Exemplo:

$ cat file.txt
192.168.0.1
192.168.0.11
192.168.0.14
192.168.0.15
192.168.0.17
192.168.0.2
192.168.0.3
192.168.0.44
192.168.0.46
192.168.0.49
192.168.0.50

$ sort -t. -k4,4n file.txt
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.11
192.168.0.14
192.168.0.15
192.168.0.17
192.168.0.44
192.168.0.46
192.168.0.49
192.168.0.50
    
por 09.10.2016 / 00:31

Tags