min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

bash 正規表現で漢字のみを抽出する ls | egrep 'DB[亜-熙]' または ls | grep -P 'DB\p{Han}'

grepで漢字のみ抽出したい。正規表現を使うからegrepならイケそう。

 ls | egrep 漢字 ができれば良さそう。

 

サンプルはこれ。

f:id:min117:20200412104738p:plain

「DB」の後ろに漢字がくる行のみ抽出したい。

 

いつものこのサイトを参考にさせてもらう。

orebibou.com

 

漢字でgrepするにはいくつか方法があるみたいだけど、より簡単で手が覚えそうなのは「文字で範囲を指定する」方法。

f:id:min117:20200412105343p:plain

とある。

 

「カタカナ」「漢字」「句読点」の3つを試してみる。

f:id:min117:20200412113646p:plain

イメージとしては

$ ls | egrep 'DB[亜-熙]'

$ ls | egrep 'DB[ァ-ン]'

$ ls | egrep 'DB[ -】]'

でできそう。

 

やってみる。

 

DB漢字」と続くもののみ抽出する。

$ ls | egrep 'DB[亜-熙]'

f:id:min117:20200412110348p:plain

すげぇ。一発でできた。こりゃ便利だ。

 

DBカタカナ」と続くもののみ抽出する。

$ ls | egrep 'DB[ァ-ン]'

f:id:min117:20200412110006p:plain

素晴らしい。

 

DB句読点」と続くもののみ抽出する。

$ ls | egrep 'DB[ -】]'

f:id:min117:20200412110615p:plain

かなり実用だ。

 

 

macOSのmemoアプリにも入れておく。すぐコピペできるように。

f:id:min117:20200412111156p:plain

$ ls | egrep 'DB[亜-熙]'

$ ls | egrep 'DB[ァ-ン]'

$ ls | egrep 'DB[ -】]'

 

 



今度はPerlのUnicodeプロパティスクリプトを使う方法でやってみる。

f:id:min117:20200412111521p:plain

 

Perlを使うときは grep -P とするらしい。やってみる。

 

漢字のみ抽出。

$ ls | grep -P 'DB\p{Han}'

f:id:min117:20200412112956p:plain

すごい。Hanは漢字の「漢」のことだろうか?あと、pの前のバックスラッシュを円マークにすると正しくgrepできないようなので要注意。

 

カタカナのみ抽出。

$ ls | grep -P 'DB\p{Katakana}'

f:id:min117:20200412112944p:plain

素晴らしすぎる。覚えやすい。超実用。

 

Linux最高。これ知ってるだけで人生の幅が10倍くらいに拡がる。

 

 

参考) 

www.atmarkit.co.jp

f:id:min117:20200412112234p:plain

www.regular-expressions.info

so-zou.jp