13

「;」で区切られたフィールドを持つcsvファイルがあります。8つのフィールドがあり、最初の4列でデータを昇順で並べ替えたい(最初に列1で並べ替え、次に列2で並べ替えるなど)。

Linuxのコマンドラインからこれを行うにはどうすればよいですか?

オープンオフィスで試してみましたが、3列しか選択できません。

編集:データを並べ替えたいフィールドのうち、3つのフィールドには数値の文字列が含まれ、1つは文字列のみです。sortコマンドでこれを指定するにはどうすればよいですか?

4

2 に答える 2

21

試す:

sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n test.txt

例えば:

1;2;100;4
1;2;3;4
10;1;2;3
9;1;2;3

> sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n temp3
1;2;3;4
1;2;100;4
9;1;2;3
10;1;2;3
于 2012-08-13T13:16:04.370 に答える
9

sort -kソートキーを定義できます。差出人man sort

-k, --key=POS1[,POS2]
       start a key at POS1 (origin 1), end it at POS2 (default end of line). 

それで

$ sort -t\; -k1,4

それをする必要があります。セミコロンをエスケープしたことに注意してください。エスケープしないと、シェルはそれをステートメントの終わりとして解釈します。

于 2012-08-13T13:05:26.843 に答える