列に基づいて並べ替える

列に基づいて並べ替える
10 awhdk;
14 hjoeow;
2  kdkld;
4  jkjdksl

これを列 1 (つまりカウント) に基づいて並べ替えるにはどうすればよいでしょうか?

次のような出力を得たいです:

14 hjoeow;10 awhdk;4 jkjdksl;2 kdkld

最初の列をソートして両方の列を印刷する必要があります。

答え1

-k入力行のどこでソート キーが開始および終了するかを指定するために使用できます。

オプションを使用する-nか、nソート キー仕様に追加して、デフォルトの字句ソートではなく数値ソートをトリガーします。また、-rソートを逆にします。

ここで、数値ソートの場合、ソート キーを sort コマンドに制限する必要はありません。制限する場合は、次の操作を行います。

sort -rn file

行全体を数値として扱います。14 hjoeow;たとえば、行は14数値として認識されます。

次のようにすることができます:

sort -bk 1,1rn file

最初のフィールドのみで並べ替えますが、違いはありません。

行を結合するコマンドはオプションですpaste-s区切り文字は . で指定できます-d\0 これは区切り文字の特別な値で、間に何も挟まずに結合するしたがって、期待される出力を得るには、次のようにします。

sort -rn file | paste -sd '\0' -

POSIXではpasteファイル名を渡す必要があります。-これも特別な値であり、標準入力paste実装によっては省略できます。

関連情報