У меня есть несколько файлов:
Файл 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
а32
б12
Файл 2
а 233
б 423
Файл 3
д 3 124
е 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