普段は、自宅でも会社でもWindowsマシンばかり使っているので、Linuxでファイル検索したいときに、いつもメタキャラクタの記述方法を忘れていて、googleで調べながらやっています。。
そこでここでは、Linuxで検索やフィルタを効率よく行うために覚えておきたいメタキャラクタ(特別な意味に解釈される文字)を、まとめておきたいと思います。
目次
シェルのメタキャラクタ
検索やフィルタで使用する主なメタキャラクタ(ワイルドカード)は、以下のとおりです。
メタキャラクタ | 説明 |
---|---|
* | 0文字以上の文字または文字列 |
? | 任意の1文字 |
[文字列] | [ ]内の任意の1文字 |
[!文字列] | [ ]内の任意の1文字以外 |
使用例
「a」「ab」「abc」などのアルファベット小文字「a」から始まる文字または文字列
a*
「ab」「a1」などのアルファベット「a」から始まる2文字の文字列
a?
「ab」または「ac」または「ad」
a[bcd]
「a0」「a1」などのアルファベット「a」と数字の2文字の文字列
a[0-9]
「aa」「a1」などのアルファベット「a」と2文字目がbcd以外の2文字の文字列
a[!bcd]
正規表現のメタキャラクタ
主な正規表現のメタキャラクタは、以下のとおりです
メタキャラクタ | 説明 |
---|---|
. | 任意の1文字 |
* | 直前の文字の0回以上の繰り返し |
^ | 行頭 |
$ | 行末 |
[] | 囲まれた範囲の1文字 |
\ | 直後のメタキャラクタの意味を解除(エスケープ) |
+ | 直前の文字の1回以上の繰り返し |
? | 直前の文字の0回もしくは1回の繰り返し |
| | 左右の選択肢のいずれか |
() | 正規表現の有効範囲 |
使用例
0文字以上の任意の文字列
.*
「chosen」もしくは「chose」
chosen?
「Windows Server」もしくは「WindowsServer」
Windows ?Server
アルファベット大文字のみの文字列
[A-Z]+
数字のみの文字列
[0-9]+
アルファベット1文字
[a-zA-Z]
aでもbでもcでもない1文字
[^abc]
行頭と行末の間になにもない行(改行のみの行)
^$
sample.comドメインのメールアドレス
.*@sample\.com
「Monday」「Tuesday」「Wednesday」のいずれか
(Monday|Tuesday|Wednesday)
あとがき
正規表現は、それ自体で1冊の本になるぐらい奥深いもののようですが、Linuxマシンで検索する時は、これぐらい知っておけば概ね大丈夫そうです。