ファイルの一部のソート

ファイルの一部のソート

端末で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

おすすめ記事