端末で2番目の列に基づいてファイルをソートする方法ファイルの内容は次のとおりです。
Nome Note
------------
Mehdi 0
Sunday 20
Others 10
Shnou 5
使用してsort -t' ' -nk2
も正しい結果が出ません。また、ファイルの内容がソートされたままになるようにするにはどうすればよいですか?
ベストアンサー1
私の考えであなたが望むのはこれです:
方法#1:頭と尾を使う
$ (head -n 2 sample.txt; tail -n +3 sample.txt | sort -t' ' -nk2) > a.tmp && mv a.tmp sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20
これにより、テキストファイルの最初の行をインポートし、最初の2行以降のすべての項目をインポートしてソートします。
方法 #2: ヘッダーのみを使用
$ (head -n 2; sort -t' ' -nk2) < sample.txt > a.tmp && mv a.tmp sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20
テキストファイルを入力として使用して、最初の行のみを表示し、残りの行を並べ替えます。
ファイルを適切に編集するのは一般的に良い考えではありません。可能ですが、中間ファイルを使用する方が良いです。
方法#3:中間ファイルなしで#2を実行する
@StephaneChazelasのアイデアを借りて、 "1 <>"表記を使用してファイルを読み書きするために開くことができますsort
。
$ (head -n 2; sort -nk2) < sample.txt 1<> sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20