Ordenar columnas junto a la última columna en Linux

Ordenar columnas junto a la última columna en Linux

Tengo varios archivos:

Archivo 1

a 1 2

b 3 2

Archivo 2

a 2 2 3

b 4 3 3

Archivo 3

d 3 1 2 4

e 4 1 1 2

Me gustaría ordenar los archivos según la columna al lado de la última columna, después de ordenar:

Archivo 1

a32

b12

Archivo 2

un 233

segundo 423

Archivo 3

re 3 124

mi 4 112

Estoy usando 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

¿Hay alguna manera mejor de hacerlo?(Al usar awk, hay algunos problemas cuando n (columnas) es grande)

Gracias,

Respuesta1

Prueba con algo como

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

información relacionada