各行のカンマ区切りフィールドを数値でソート

各行のカンマ区切りフィールドを数値でソート

私はこれを試しました:

$ echo "2,3435,1" | sort -n
2,3435,1

$ sort -t',' -n test_sort.txt
kill,gill,burger
110,20,30,13

$ cat test_sort.txt
110,20,30,13
kill,gill,burger

私のsortコマンドが機能しないのはなぜですか?

私が望むコマンドはsort次のように動作するはずです。

$sort -t',' -n test_sort.txt  
110,13,20,30,burger,gill,kill

答え: tr , '\n' < a | sort -n 貼り付け、 -

「スティーブン・チャジェラスに感謝します」

ベストアンサー1

sortライン全体を走る。デフォルトでは、行の内容全体をソートしますが、-kその行内の1つ以上のフィールドをソートするためにも使用できます。 -tフィールド間の区切り文字を変更するために使用できます。使用せ-tずに使用することが-k意味のある状況は考えられません。

2番目のコマンドは次のとおりです。

printf "%s\n%s\n" "110,20,30,13" "kill,gill,burger" | sort -t',' -n

生産する:

kill,gill,burger
110,20,30,13

これがまさに私が期待したものです。 -t','個々のフィールドに対してソート操作を指示しないと、フィールド区切り文字が変更され、数値がゼロ(および数値ソート要求を使用したため)以前にソートされたため、k何の効果もありません。1-n

おすすめ記事