(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】uniqのcountオプションの区切りを右詰スペースからカンマ区切りにする

スポンサーリンク

はじめに

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等でソートする際も綺麗に扱えます。

以上、同様のことを実施しようとした方の参考になれば幸いです。