BLOG

【Linux研修】おはじきの記録5

こんにちは、おはじきです。
私事ではありますが、先週末にLpic101の試験を受験し、無事合格致しました!

いや~よかったです。
しっかり勉強していったので自信はあったのですが、なんせ受験料16,000円もするので落ちたらシャレにならないんですよね。

とはいえ101に合格しても、その後102の試験に合格しないとLpicレベル1に認定してもらえないので通過点でしかないのですが、なんとか第一関門を突破しました。
この調子で102の試験の合格目指して勉強を進めたいと思います。

正規表現

さて、本日は正規表現について解説していきます。
正規表現、聞き慣れないワードですよね。
正規表現とは、プログラミングなどでよく使われる、任意の文字列のパターンを表すための方法です。
正規表現を利用することで、ファイル内の文字列を自由自在に検索したり、
この部分はローマ字しか使えませんよ、などの制限を加えられます。

Linuxでは、例えば以下の画像のような使い方をします。
egrepもしくはgrep -Eコマンドの後にシングルクォーテーションで挟んでパターンを入力します。
検索パターンに引っかかった行のみが表示され、パターンにマッチした部分が赤く表記されます。

このパターンに指定された.*いう文字ですが、
.は任意の一文字、
*は直前の文字の0回以上の繰り返しという意味があります。
つまり.*は任意の文字の0回以上の繰り返しなので、ファイルに記されている全ての文字にマッチしますね。
この赤文字部分が正規表現にマッチしたことを意味しています。

続いてこちらはどういう意味でしょうか?

同じファイル内で検索をかけていますが、表示される部分が一気に少なくなりましたね。
この正規表現の意味は数字の1~3回の繰り返し、-を挟んで更に数字の1~3回の繰り返しという表現です。
[]で囲うことによって囲った文字を含む、文字クラスという表現になります。
[0-9]のハイフンは0~9までのという意味で、[0123456789]を略した表現です。
因みに[a-z]で小文字のアルファベット、
[A-Z]で大文字のアルファベットを表現できます。
そしてこの{1,3}ですが{}は繰り返しを意味します。
1,3のようにカンマで区切ることで1~3回の繰り返しということになります。

続いてこちらはどうでしょうか?


こちらはoで始まる、またはXで終わる行を検索するパターンです。
^は行の頭が何で始まるかを指定できます。
$は行の末の文字を指定できます。
因みに[]内の頭に^を入れると[]内の文字を含まない行を検索するという意味になりますので注意して使いましょう。

今回の肝はこの|ですね、
Linuxではコマンドの入出力を他のコマンドへ引き渡す役割を持つパイプとして使われている|の記号ですが、
シングルクォーテーションで囲うことで「または」という表現になります。
因みにシングルクォーテーションで囲わないとパイプとして解釈されてしまうので「コマンドがみつかりません」という旨のエラーが表示されます。

正規表現に使える表現をまとめてみました。
これだけではありませんがLpicの試験範囲はこちらを押さえておけばいいかと思います。

.任意の一文字
*直前の文字の0回以上の繰り返し
[][]内のいずれか1文字
{}{}内の数字の回数の繰り返し
^行頭
$行末
+直前の文字の1回以上の繰り返し
?直前の文字の0回または1回
|左右いずれかの文字列

最後に

今回は正規表現についてまとめてみました。
大量の情報が格納されたファイルから欲しい情報を探したり、
相手に入力してもらう範囲を制限するなど、業務でも使用する機会が非常に多いです。
是非マスターして複雑な表現も自由に扱えるようにしたいですね。

次回からは102の試験範囲であるシェルスクリプトやネットワーク、セキュリティなどの内容を説明していきたいと思います。
よろしくお願いいたします。

BLOGトップへ戻る