在 Linux 中對最後一列旁邊的列進行排序

在 Linux 中對最後一列旁邊的列進行排序

我有多個文件:

文件1

a 1 2

b 3 2

文件2

a 2 2 3

b 4 3 3

文件3

d 3 1 2 4

e 4 1 1 2

我想在排序後根據最後一列旁邊的列對文件進行排序:

文件1

A32

12

文件2

a233

乙423

文件3

d 3 124

e 4 112

我正在使用 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

有更好的方法嗎?(使用awk,當n(列)很大時會出現一些問題)

謝謝,

答案1

嘗試類似的東西

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

相關內容