質問

のタイトルがそれをまとめています。

$ 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で処理されていることを意味)を直接見ていきましょう。

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