正規表現の基礎

 

こんにちは!今回は正規表現について具体例を用いて簡単に紹介していきたいと思います。

正規表現はlinuxを使っていれば避けては通れないといっても過言ではないほどよく使うものです。

正規表現を使いこなすことでより効率的に探しているファイルや設定ファイルの該当箇所を見つけることができるはずです。

まず、正規表現とは「特定の条件を表す文字列を表現したもの」です。この特定の条件を指定する時に役立つのがメタキャラクタと呼ばれる特殊記号です今回は主要なメタキャラクタの説明を例を用いながらしていきたいと思います。

 

①「*」…0文字以上の文字、文字列

「a*」は、ab、abb、a123、aaaaaaaa のいずれにもマッチします。

1つ目の例では/var/logディレクトリで「mail」から始まるファイルを検索しています。

2つ目の例では末尾が「.log」で終わるファイルを検索しています。

# ls mail*
maillog  maillog-20140827  maillog-20140903  maillog-20140910  maillog-20140917
# ls *.log
boot.log  cloud-init.log  dracut.log  mysqld.log  yum.log

②「?」…任意の1文字

「a?c」は、abc、axc、a1cのいずれにもマッチします。

# ls
atest.c  atest.log  atest.txt  btest.c  btest.log  btest.txt
# ls ?test.txt
atest.txt  btest.txt

③「 [] 」… []内のいずれか1文字

a[123]bは、a1b,a2b,a3bのいずれにもマッチします。

「-」で範囲指定。「^」が先頭にある時は「~以外」を表します。

1つ目の例ではtest1~5のファイルを[]で範囲指定して標準出力しています。

2つ目の例では先頭の文字が a,b,c 以外のdtest.txtファイルを標準出力しています。

# ls 
test1.txt  test2.txt  test3.txt  test4.txt  test5.txt  test6.txt  test7.txt  test8.txt  test9.txt
# ls test[1-5].txt
test1.txt  test2.txt  test3.txt  test4.txt  test5.txt
# ls 
atest.txt  btest.txt  ctest.txt  dtest.txt
#ls [^abc]test.txt
dtest.txt

④「{}」…「,」で区切られた文字列にマッチする。

# ls
test1 test2 test3
# ls test{1,3}
test1 test3

⑤「^」…行頭 「$」…行末

1つ目の例ではtest.txtファイルの中にある行頭がaのものを検索して標準出力しています。

2つ目の例ではtest.txtファイルの中にある行末がtのものを検索して標準出力しています。

# cat test.txt
apple
apache
big
bus
cat
cut 

# grep ^a test.txt
apple
apache

# grep t$ test.txt
cat
cut

⑥「.」…任意の1文字か

「a.c」は、abc、axc、a1cのいずれにもマッチします。

#cat test.txt
apple
apache
big
bus
cat
cut

#grep c.t test.txt
cat
cut

正規表現に関しては実際に手を動かしながら覚えたほうがより覚えやすいと思いますのでまだ完璧にマスターしていないという方はぜひ実際にコマンドを打っていってみてください。

コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.