GNU/Linux >> Linux の 問題 >  >> Linux

ファイルの一部を並べ替えますか?

ターミナルから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

Linux
  1. リダイレクトの順序は?

  2. UnicodeテキストでUniqを使用していますか?

  3. タブ区切りファイルのソート

  1. Linuxシェルは、2番目の列に従ってファイルをソートしますか?

  2. ファイルをその場でソートする方法

  3. 人間が読めるサイズのファイルの並べ替え

  1. Linuxでの並べ替えコマンドと例

  2. ファイルまたはディレクトリが含まれているファイルシステムを確認しますか?

  3. Linux での sort コマンドの例