📘

【Linuc101勉強記録】 GNUとUnixのコマンド分野編 その2

に公開


Linux公式マスコット タックス(英: Tux)

はじめに

みなさんこんにちは。
GNUとUnixのコマンドの分野の勉強を始めたので、自分の記憶のアウトプットとして学んだ部分をメモとしてまとめていきたいと思います。
今回は、正規表現と拡張正規表現についてまとめていきたいと思います。

正規表現

  • 正規表現は任意の文字列パターンを表す表記方法。
正規表現 説明
* 直前の文字の0回以上の繰り返し
. 任意の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回の繰り返し
前後のいずれかの文字列

メタキャラクタと正規表現の違い

表現方法 説明
メタキャラクタ シェルにおいて、特別な意味を持つ記号のこと。
正規表現 文字列のパターンを表す時に利用される表現方法。

正規化表現を使用するコマンド

1. grepコマンド

- grepコマンドは、指定した文字列を含む行を出力するコマンド。

 構文 : grep [ オプション ] 検索文字列 ファイル名 

オプション 説明
-c パターンがマッチした行の行数だけを表示
-f ファイルから検索パターンを読み込む
-i 大文字小文字を区別せずに検索
-n 検索結果と合わせて行番号も表示
-v パターンがマッチしない行の表示
-E 拡張正規表現の使用。egrepコマンドの場合も同じ。
-F 検索文字列を正規表現ではなく固定文字列として認識。fgrepコマンドの場合も同じ。

2. egrepコマンド

- egrepコマンドは「 + 」、「 ? 」、「 | 」などの拡張正規表現を使用する際に使用する       コマンド。ただし、拡張正規表現は、grep -Eコマンドでも使用することも可能。

 構文 : egrep [ オプション ] 検索文字列 ファイル名

3. fgrepコマンド

- fgrepコマンドは検索文字列に正規表現を使用せず、固定文字列として検索する場合に使用するコマンド。grep -Fコマンドを使用する場合や正規表現の「 \ 」を用いた場合と同じ機能を持つコマンド。

 構文 : fgrep [ オプション ] 検索文字列 ファイル名

4. sed コマンド

- sed コマンドは、テキストストリームに対して編集を行うコマンド。

構文 : sed [ オプション ] -f スクリプト [ ファイル ]

オプション 説明
-f ファイル コマンドが書かれたスクリプトファイルを指定

構文 : sed [ オプション ] コマンド [ ファイル ]
構文 : sed [ オプション ] -e コマンド1 -e コマンド2 [ ファイル ]

オプション 説明
d マッチした行の削除。「 "開始行,終了行d" 」 と指定することで削除。
s パターンに基づいた置換。「 s/検索パターン/置換パターン 」 と指定することで置換
y 文字の変換。「 y/検索文字/置換文字 」 と指定することで置換

さいごに

  • 「正規表現とは、文字列のパターンを表現するための記法」
  • 学び始めるまで、正規表現がどういうものかすら知らなかったのですが、今回の学習で理解できたと思います。このブログが皆さんの助けになれていればうれしいです。

Discussion