Sortieren Sie die Spalten vor der letzten Spalte in Linux

Sortieren Sie die Spalten vor der letzten Spalte in Linux

Ich habe mehrere Dateien:

Datei 1

a 1 2

b 3 2

Datei 2

a 2 2 3

b 4 3 3

Datei 3

d 3 1 2 4

e 4 1 1 2

Ich möchte die Dateien nach der Spalte neben der letzten Spalte sortieren, nach dem Sortieren:

Datei 1

A32

B12

Datei 2

eine 233

b 423

Datei 3

d 3 124

e 4 112

Ich verwende 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

Gibt es eine bessere Möglichkeit, das zu tun?(Bei der Verwendung von awk gibt es einige Probleme, wenn n (Spalten) groß ist)

Danke,

Antwort1

Versuchen Sie es mit etwas wie

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

verwandte Informationen