Perl・Rubyでコンソール上で標準入力から受け付けた絵文字😅💖をすべて削除・置換する
Pocket

先日行われたシェル芸勉強会でそういった問題が出てたのだけど、絵文字をすべて削除したり置換する方法って今後使うこともありそうなので、これだけ抜き出して記述しておくことにする。

 

Perlを使う場合

Perlの場合、Unicode Propitiesというのがあるので、それで絵文字として指定…できればよかったんだけど、残念ながらそのブロック単位では無いらしい。
もうちょっと小さい単位で定義されているので、こういうときに一発で指定が出来ない。なので、使う文字ブロックだけを指定してやるとよさそうだ。

command ... | perl -C -ple 'use utf8;s/[^\p{BasicLatin}|\p{Katakana}|\p{Hiragana}|\p{Han}|\p{CJKSymbolsAndPunctuation}|\p{HalfwidthAndFullwidthForms}]//g'
Sponsored Links

Rubyを使う場合

Rubyの場合、最初から絵文字がブロックとして登録されているので、そのまま指定してやればよい。

command ... | ruby -lne 'p $_.gsub(/\p{Emoji}/, "")'

 

やはり、こういう問題ではRubyは強いようだ。
sedとかでやるとかなり辛いことになりそう(文字コード指定して、範囲外はすべて置換するみたいなことになりそう)。

 

Pocket

Written by blacknon

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

Leave a Comment

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

*