迅速かつ汚い:
awk -F: '{$0=NF"#"$0}1' file|sort -nr|sed 's/.*#//'
あなたの例でテストしてください:
kent$ echo "key value:value:value:value
key value:value
key value
key value:value:value"|awk -F: '{$0=NF"#"$0}1'|sort -nr|sed 's/.*#//'
key value:value:value:value
key value:value:value
key value:value
key value
編集
Linux/Unix ボックスのソート ツールは非常に強力です。ただし、何らかの計算に基づくのではなく、列/フィールドに対してソートします。あなたの要件は、最初に計算を行い、結果に対してソートする必要があります。
したがって、のカウントである新しい列を追加し、:
並べ替えコマンドで並べ替え、最後にその列を削除します。
awk adds the column
sort does sort
sed removes that column
これらのパイプを削除して出力を確認すると、それがどのように機能したかがわかります。