読者です 読者をやめる 読者になる 読者になる

300億円欲しい

メジャーリーグのデータ解析します

sedで同じ文字の連続を圧縮して1文字にしたい

問題

例えば, hooooogeeeee を hogeにしたいのです.

rubyのsqueezeを, sedでやりたいのです.

解決策

このStack overflowの記事を参考にしました.

検索側でキャプチャパターンを使えばイケるらしいです. なるほど. キモいです.

やってみました. (.)\1+ で2文字以上の連続文字列になるんですね..

しかし, Macではsedとgsedで挙動が違いました.

よく分かっていませんが, gsedなら欲しい結果が得られました.

$ echo hoooogeee | gsed 's/\([A-Za-z]\)\1\+/\1/g'
hoge

$ echo hoooogeee | sed 's/\([A-Za-z]\)\1\+/\1/g'
hoooogeee

なるほど. wowoさんありがとうございました.

他の解決策

@kohse先生が教えて下さいました.

$ echo hoooogeeee | sed 's/\(.\)\1*/\1/g'
hoge

なるほど. ありがとうございました.