Ordenar colunas ao lado da última coluna no Linux

1

Eu tenho vários arquivos:

Arquivo 1

a 1 2

b 3 2

Arquivo 2

a 2 2 3

b 4 3 3

Arquivo 3

d 3 1 2 4

e 4 1 1 2

Gostaria de ordenar os arquivos de acordo com a coluna ao lado da última coluna, depois de ordenar:

Arquivo 1

a 3 2

b 1 2

Arquivo 2

a 2 3 3

b 4 2 3

Arquivo 3

d 3 1 2 4

e 4 1 1 2

Estou usando o awk:

while read line
do
cat $line|awk '{print $(NF-1)"\t"$0}'|\
         sort -n -r|awk '$1=" " {print $0}' > $line.sorted.txt
done < listfile.txt

Existe alguma maneira melhor de fazer isso? (Usando o awk, existem alguns problemas quando n (colunas) é grande)

Obrigado,

    
por seaboy 30.12.2012 / 03:31

1 resposta

1

Tente com algo como

for i in f*; do
  echo "=== $i" ;
  N=$( echo $( head -1 $i | wc -w ) -1 | bc );
  sort -nrk$N $i;
done
    
por 30.12.2012 / 22:07

Tags