min117の日記

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

bash [[ ]] 内で使える正規表現 =~ を grep -e と比較して覚える

 

bashのカッコについてまとめられた良記事2つ。

qiita.com

fj.hatenablog.jp

毎日使うbashだから、そろそろ正規表現を手に叩き込む。

grep -e はよく使っていたけど、二重カッコ  内で =~ を使うとif文の条件判定に正規表現が使えるようなので、こちらを手に覚えさせる。

例題:

フォルダ内をlsした結果をフィルタする。

ファイル名がMoで始まって、途中に数値とハイフンが挟まって、最後はmp4で終わる

ファイルのみにマッチさせる。

ーーー

grep -e の場合

$ ls | grep -e ^Mo.*[0-9]-.*.mp4$

f:id:min117:20160306191227p:plain

二重カッコ   =~ の場合

for i in *; do if [[ "$i" =~ ^Mo.*[0-9]-.*.mp4$ ]]; then echo "$i"; fi; done

f:id:min117:20160306191523p:plain