こんにちは!今回は正規表現について具体例を用いて簡単に紹介していきたいと思います。
正規表現は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 |
正規表現に関しては実際に手を動かしながら覚えたほうがより覚えやすいと思いますのでまだ完璧にマスターしていないという方はぜひ実際にコマンドを打っていってみてください。
投稿者プロフィール
最新の投稿
- AWS2021年12月2日AWS Graviton3 プロセッサを搭載した EC2 C7g インスタンスが発表されました。
- セキュリティ2021年7月14日ゼロデイ攻撃とは
- セキュリティ2021年7月14日マルウェアとは
- WAF2021年7月13日クロスサイトスクリプティングとは?