はじめに
sort結果をカウントする際に便利なuniqコマンドによるcountオプションですが、そのまま使うと以下のように右詰スペース区切りになってしまいます。
3 日本語訳 10 機械学習 1 生産性向上 1 画像処理 3 異常検知
これでは少し扱いづらいので上記を
3,日本語訳 10,機械学習 1,生産性向上 1,画像処理 3,異常検知
として出力するワンライナーを作成したので共有します。
右詰スペースをCSV形式で表示するコマンド
uniq -c に続くコマンドとして以下を追記します。
uniq -c | sed -e 's/ */ /g' | cut -c 2- | sed -e 's/ /,/'
以下、解説です。
解説
sed -e 's/ */ /g'
部分で連続したスペースを一つにまとめます。
3 日本語訳 10 機械学習 1 生産性向上 1 画像処理 3 異常検知
そうすると上のようになります。
次に冒頭のスペースをとるべくcut -c 2-
にて2文字目以降を出力します。
3 日本語訳 10 機械学習 1 生産性向上 1 画像処理 3 異常検知
最後に区切り文字となっている一つ目のスペースをsed -e 's/ /,/'
にてカンマに変更します。
3,日本語訳 10,機械学習 1,生産性向上 1,画像処理 3,異常検知
終わりに
もっとシンプルな方法もあるとは思いますが、とりあえず実装したのでメモしておきます。
この形式にさえしてしまえばsort -t',' -k1,1rn
等でソートする際も綺麗に扱えます。
以上、同様のことを実施しようとした方の参考になれば幸いです。