ターミナル上でファイル等から畳語(じょうご:ワンワン、ドキドキ、ムラムラなど)を正規表現で抽出、置換する

ちょっとシェル芸botで遊んでいた際、ふと畳語(ワンワンとかドキドキとかムラムラ、ビンビン、ヌレヌレなど、反復する言葉)を抽出したり、置換するにはどうすればいいかなと思ったので、やってみることにした。
なお、grepやsedについては使用するのはGNU拡張されたものを用いるので、Mac OS Xに入っているgrepやsedでは同じことができないかもしれないので注意。

1.抽出する場合

GNU grepにはPerl正規表現を利用できるオプションがあるので、以下のように記述することで畳語を抽出できる。
(Perlの正規表現を使うことでunicode propertiesが利用できるようになるので、カタカナ/ひらがなの抽出が楽にできる)

grep -P '(\p{Katakana}{2,3}|\p{Hiragana}{2,3})\1'
blacknon@test-ubuntu:~$ echo オラ、ワクワクしてきたぞ | grep -Po '(\p{Katakana}{2,3}|\p{Hiragana}{2,3})\1'
ワクワク
blacknon@test-ubuntu:~$ echo ムラムラ学園 | grep -Po '(\p{Katakana}{2,3}|\p{Hiragana}{2,3})\1'
ムラムラ
blacknon@test-ubuntu:~$ echo ぬれぬれせんべい | grep -Po '(\p{Katakana}{2,3}|\p{Hiragana}{2,3})\1'
ぬれぬれ

 

Perlの正規表現を使わない場合、以下のようにする。

grep -E '([ぁ-ん]{2,3}|[ァ-ン]{2,3})\1'
blacknon@test-ubuntu:~$ echo わくわくしてたぞ! | grep -Eo '([ぁ-ん]{2,3}|[ァ-ン]{2,3})\1'
わくわく
Sponsored Links

2.置換する場合

置換をする場合、perlを使うとunicode propertiesが利用できるので楽だ。

perl -C -ple 'use utf8;s/(\p{Katakana}{2,3}|\p{Hiragana}{2,3})\1/xxxx/g'
blacknon@test-ubuntu:~$ echo わくわくしてたぞ! | perl -C -ple 'use utf8;s/(\p{Katakana}{2,3}|\p{Hiragana}{2,3})\1/ムラムラ/g'
ムラムラしてたぞ!

 

sedで置換する場合、以下のようにする。

sed -r 's/([ぁ-ん]{2,3}|[ァ-ン]{2,3})\1/xxxx/g'
blacknon@test-ubuntu:~$ echo キュンキュンである!! | sed -r 's/([ぁ-ん]{2,3}|[ァ-ン]{2,3})\1/ムラムラ/g'
ムラムラである!!

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*