ターミナルから2番目の列でファイルを並べ替えるにはどうすればよいですか。ファイルの内容は次のとおりです。
Nome Note
------------
Mehdi 0
Sunday 20
Others 10
Shnou 5
sort -t' ' -nk2
を使用する 私に正しい結果を与えていません。また、ファイルのコンテンツがソートされたままであることを確認するにはどうすればよいですか?
承認された回答:
あなたが求めているのは次のようなものだと思います:
方法#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