Gnu sedでリピートされている文字のみを削除する

リピートされた文字を削除する処理が必要になったので、備忘で残しておく。
以下のように記述することで、sedで同じ文字がリピートされた場合は削除ができる。なお、GNU Sedでしか動作しないので注意。

echo aabbbbbbbbbcde | sed 's/\(.\)\1\+/\1/g'
echo aabbbbbbbbbcde | sed -r 's/(.)\1+/\1/g' # エスケープなしにして分かりやすくした場合
echo aabbbbbbbbbcde | sed -r 's/(.)\1{1}/\1/g' # リピート回数を指定する場合({}のなかに入る数字はリピート回数-1)
Sponsored Links

blacknon@BS-PUB-UBUNTU-01:~$ echo aabbbbbbbbbcde | sed 's/\(.\)\1\+/\1/g'
abcde
blacknon@BS-PUB-UBUNTU-01:~$ echo aabbbbbbbbbcde | sed -r 's/(.)\1+/\1/g'
abcde
blacknon@BS-PUB-UBUNTU-01:~$ echo aabbbbbbbbbcde | sed -r 's/(.)\1{1}/\1/g'
abbbbbcde
blacknon@BS-PUB-UBUNTU-01:~$ echo aabbbbbbbbbcde | sed -r 's/(.)\1{2}/\1/g'
aabbbcde

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*