• ベストアンサー

unixコマンドについて

ユニークカウント uniq -c とすると、 カウント数<スペース>カウント対象物 例)  10 ○○△△   9 ○□ ・・・ というデザインで出力されると思いますが、 この カウント数とカウント対象物の間のスペースをタブ区切りに変更するもっとも簡単なコマンドを教えてください。 なお、カウント対象物の中にもスペースが含まれており、そのスペースはタブ区切りにしたくはないので、あくまでも、カウント数とカウント対象物の間だけを変換したいのです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.2

こんな感じでしょうか。 … | uniq -c | sed 's/^ *//;s/ /\t/'

1204533
質問者

お礼

ファイルにミスがあり、再度実施しましたところ、うまくいきました。ありがとうございます。

1204533
質問者

補足

これで実装すると、カウント対象物内のはじめのスペースもタブ区切りになってしまいました。これでは うまくいかないようです。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

空白があって数字が続いた直後の空白をタブに。 ~~ | uniq -c | sed 's/\( *[0-9]*\) /\1\t/' 先頭の空白を削除するなら、 ~~ | uniq -c | sed 's/ *\([0-9]*\) /\1\t/'

1204533
質問者

お礼

このやり方でもうまくいきました。ありがとうございます。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

行頭 0個以上のスペースの列 1個以上の数字の列 1つのスペース を (0個以上のスペースの列 1個以上の数字の列 までを元の行から ) 1つのタブ に置換すればいい。 シェルによってはタブ文字入れるのが面倒だったりするだけで、あとはsedでできる。

1204533
質問者

お礼

ありがとうございます。考え方は理解できましたが、この処理を簡単に実行するにはどうしたらよいか 悩んでおります。

関連するQ&A