◆ 正規表現
正規表現は任意の文字列パターンを表す表記方法です。正規表現はシェルのメタキャラクタと似ています。
正規表現 | 説明 |
* | 直前の文字の0回以上の繰り返し 例 : 1*3.txt は、13.txt、123.txt などを表す。 |
. | 任意の1文字の文字列 例 : 1..4.txt は、1234.txt、1ab4.txt などを表す。 |
[ ] | [ ] 内の任意の1文字の文字列 例 : 1[23]4.txt は、124.txt または 134.txt を表す。 |
^ | 行頭 例 : ^1 は、行頭にある 1 を表す。 |
$ | 行末 例 : 1$ は、行末にある 1 を表す。 |
※ 直前に\ (半角のバックスラッシュ)を入力することで通常の文字として処理します。\は日本キーボードでは¥となります。
以下の「 + 」、「 ? 」、「 | 」 の3つは拡張正規表現と呼ばれる新しい表現です。
拡張正規表現 | 説明 |
+ | 直前の文字の1回以上の繰り返し |
? | 直前の文字の0回、もしくは1回の繰り返し |
| | 前後のいずれかの文字列 |
◆ メタキャラクタと正規表現の違い
表現方法 | 説明 |
メタキャラクタ | シェルにおいて、特別な意味を持つ記号のこと。 |
正規表現 | 文字列のパターンを表す時に利用される表現方法。 |
◆ grepコマンド
grepコマンドは、指定した文字列を含む行を出力するコマンドです。
◆ 構文 : grep [ オプション ] 検索文字列 ファイル名
オプション | 説明 |
-c | パターンがマッチした行の行数だけを表示 |
-f | ファイルから検索パターンを読み込む |
-i | 大文字小文字を区別せずに検索 |
-n | 検索結果と合わせて行番号も表示 |
-v | パターンがマッチしない行の表示 |
-E | 拡張正規表現の使用。egrepコマンドを使用する場合と同じ。 |
-F | 検索文字列を正規表現ではなく固定文字列として認識。fgrepコマンドを使用する場合と同じ。 |
※ grepで正規表現を使用する場合、正規表現の部分を「 ‘ 」で囲むことで、シェルのメタキャラクタとして解釈されなくなる。
◆ 実行例 : data.txt ファイルから、大文字小文字に関係なく abc という文字列を検索
$ grep -i abc data.txt |
※ 上記コマンドにより合致する文字列は、abc、ABC、Abc、ABc、aBC、abC、aBc、AbC のいずれかがマッチします。
◆ egrepコマンド
egrepコマンドは「 + 」、「 ? 」、「 | 」などの拡張正規表現を使用する際に使用するコマンドです。
ただし、拡張正規表現は、grep -Eコマンドでも使用することも可能です。
◆ 構文 : egrep [ オプション ] 検索文字列 ファイル名
◆ fgrepコマンド
fgrepコマンドは検索文字列に正規表現を使用せず、固定文字列として検索する場合に使用するコマンド。
grep -Fコマンドを使用する場合や正規表現の「 \ 」を用いた場合と同じ機能を持つコマンドです。
◆ 構文 : fgrep [ オプション ] 検索文字列 ファイル名
◆ 実行例 : “data.txt”ファイルから、「 * 」 を文字列として検索
$ fgrep ‘*’ data.txt |
◆ sed コマンド
sed コマンドは、テキストストリームに対して編集を行うコマンド。
◆ 構文 : sed [ オプション ] -f スクリプト [ ファイル ]
オプション | 説明 |
-f ファイル | コマンドが書かれたスクリプトファイルを指定 |
◆ 構文 : sed [ オプション ] コマンド [ ファイル ]
◆ 構文 : sed [ オプション ] -e コマンド1 -e コマンド2 [ ファイル ]
オプション | 説明 |
d | マッチした行の削除。「 “開始行,終了行d” 」 と指定することで削除を行う。 |
s | パターンに基づいた置換。「 s/検索パターン/置換パターン 」 と指定することで置換を行う。 |
y | 文字の変換。「 y/検索文字/置換文字 」 と指定することで置換を行う。 |
◆ 実行例 : data1.txt ファイルの1行目から3行目を削除し、data2.txt ファイルとして保存
$ sed ‘1,3d’ data1.txt > data2.txt |
◆ 実行例 : data.txt ファイルの abc に合致する部分を ABC に置換
$ sed s/abc/ABC/ data.txt |
◆ 実行例 : data.txt ファイルにおいて「1 を a」、「2 を b」、「3 を c」に置換
$ sed y/123/abc/ data.txt |