「;」で区切られたフィールドを持つcsvファイルがあります。8つのフィールドがあり、最初の4列でデータを昇順で並べ替えたい(最初に列1で並べ替え、次に列2で並べ替えるなど)。
Linuxのコマンドラインからこれを行うにはどうすればよいですか?
オープンオフィスで試してみましたが、3列しか選択できません。
編集:データを並べ替えたいフィールドのうち、3つのフィールドには数値の文字列が含まれ、1つは文字列のみです。sort
コマンドでこれを指定するにはどうすればよいですか?
試す:
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
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
それをする必要があります。セミコロンをエスケープしたことに注意してください。エスケープしないと、シェルはそれをステートメントの終わりとして解釈します。