Linuxの場合:GNUソート配列をソートしません。
質問
のタイトルがそれをまとめています。
$ echo `seq 0 10` `seq 5 15` | sort -n
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
なぜこの作品でしょうか。
私はseq
を使用しない場合でもます:
echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' | sort -n
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
とにも直接echo
を捨てます:
$ echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' > numbers
$ sort -n numbers
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
解決
sort(1)
の種類の行の。あなたは空白で区切られたデータを自分で解析する必要があります:
echo `seq 0 10` `seq 5 15` | tr " " "\n" | sort -n
他のヒント
あなたはsort
のために改行を必要とするのでます:
$ echo `seq 0 10` `seq 5 15` | tr " " "\\n" | sort -n | tr "\\n" " "; echo ""
0 1 2 3 4 5 5 6 6 7 7 8 8 9 9 10 10 11 12 13 14 15
$
あなたは、入力の単一の行を持っています。ソートするものはありません。
コマンドを使用すると、それがすべて1行にsort
に渡される一連の数字になり入力されたとして。それはあなたが望むものではありません。ただ、seq
に直接sort
の出力を渡します:
(seq 0 10; seq 5 15) | sort -n
ところで、あなただけ分かったように、構造
echo `command`
通常は、あなたが期待する何を、あなたが実際に期待する何のために冗長ですしません:それは、再び出力としてそれを生成する、command
の出力をキャプチャしてecho
するためにそれを渡すようにシェルに指示します。ただ、コマンドの出力は(あなたががない限り、本当にのかもしれないエスケープシーケンスを展開する、または1つの行にすべてを崩壊し、それがecho
で処理されていることを意味)を直接見ていきましょう。
所属していません StackOverflow