複数のファイルがあります:
ファイル 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
1つの32
b12
ファイル2
2つ33
4 ビ23
ファイル3
3 1日24
4 1 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