1

У меня есть несколько файлов:

Файл 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

а 3 2

б 1 2

Файл 2

а 2 3 3

б 4 2 3

Файл 3

д 3 1 2 4

е 4 1 1 2

Я использую 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 ответ1

1

Попробуйте что-то вроде

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .