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

Perlを使う場合

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

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

Rubyを使う場合

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

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

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