質問

以下のような内容のファイルa.csvがあります

a,b,c
a  ,aa,  a
a b, c, f
a , b, c
a b a b a,a,a
a,a,a
a aa ,a , t

sort -k1 -t、a.csv を使用してソートしようとしています しかし、次の結果が得られています

a,a,a
a  ,aa,  a
a aa ,a , t
a b a b a,a,a
a , b, c
a,b,c
a b, c, f

1列目の実際の並べ替えではありません。私は何を間違えていますか?

役に立ちましたか?

解決

終了位置も1に指定する必要があります:

sort -k1,1 -t, a.csv

他のヒント

試してみてください: sort -t、-k1,1 a.csv

男性は、終了フィールドを省略すると、フィールド n から行末までのすべての文字でソートすることを提案します。

-k POS1[,POS2]'
     The recommended, POSIX, option for specifying a sort field.  The
     field consists of the part of the line between POS1 and POS2 (or
     the end of the line, if POS2 is omitted), _inclusive_.  Fields and
     character positions are numbered starting with 1.  So to sort on
     the second field, you'd use `-k 2,2' See below for more examples.

代わりにこれを試してください:

sort -k 1,1 -t , a.csv

sortは、 -k 1 を「最初のフィールドから先にソート」として読み取ります; quot; -したがって、引数を最初に渡すポイントを事実上無視します。

これは、ソートmanページに記載されており、例セクションで警告されています:

  

2番目のフィールドに数値で並べ替え   並べ替えによって関係を解決します   3番目と4番目にアルファベット順に   フィールド5の文字。 「:」を使用   フィールド区切り文字:

     

$ sort -t:-k 2,2n -k 5.3,5.4

     

代わりに -k 2 と書いた場合    -k 2,2 のうち、 sort はすべてを使用していました   2番目から始まる文字   フィールドの終わりまで   プライマリ数字キーとしての行。にとって   大多数のアプリケーション、   複数にまたがるキーの処理   数値としてのフィールドは何もしません   期待します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top