このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:位置にマッチするメタ文字とgrepコマンド

位置にマッチするメタ文字とgrepコマンド
Linuxでテキストデータを扱う際、特定のパターンを持つ文字列を検索・抽出することがよくあります。grepコマンドは、そのようなニーズに応えるための強力なツールであり、正規表現と組み合わせることで、より高度な検索が可能となります。ここでは、行の先頭や末尾など、位置にマッチするメタ文字とgrepコマンドの使い方について詳しく解説します。

grepコマンドの概要
grep(global regular expression print)は、指定したパターンにマッチする行を検索して表示するためのコマンドです。正規表現を使用することで、単純な文字列検索よりも柔軟で強力なパターンマッチングが可能になります。
【書式】grep [オプション] '<検索パターン>' <ファイル名>
[オプション]:grepコマンドの動作を変更するためのオプションを指定します。<検索パターン>:シングルクォート' 'で囲んで、検索したい正規表現パターンを指定します。<ファイル名>:検索対象のファイル名を指定します。
位置にマッチするメタ文字
位置にマッチするメタ文字を使うことで、行の先頭や末尾など、特定の位置にある文字列を検索できます。主に以下の2つのメタ文字があります。
^(キャレット):行の先頭を示します。$(ドルサイン):行の末尾を示します。
これらを他のメタ文字や文字列と組み合わせて使用します。
実践例
以下のgrepコマンドの使用例でマッチするURLの文字列が含まれるテキストファイルexample.txtを作成します。
ステップ1:example.txtの作成
user01@ubuntu:~$ nano example.txtexample.txtの内容
www.example.com
www.testsite.net
ftp.example.org
www.opensource.org
example.com
testsite.net
sampledomain.com
mywebsite.net
yourportal.org
community.com
commercial.net
# 空行を含めるステップ2:特定のパターンを検索
1.単純にcomというパターンで検索
user01@ubuntu:~$ grep 'com' example.txt出力結果
www.example.com
example.com
sampledomain.com
community.com
commercial.net解説
- パターン
'com'を指定すると、comを含むすべての行が表示されます。 - 行のどの位置に
comがあってもマッチします。
2.行頭がcomで始まる行を検索
行頭を示す^を使用して、^comというパターンを指定します。
user01@ubuntu:~$ grep '^com' example.txt出力結果
community.com
commercial.net解説
^comは「行の先頭がcomで始まる行」を意味します。community.comとcommercial.netがマッチします。
3.行末がcomで終わる行を検索
行末を示す$を使用して、com$というパターンを指定します。
user01@ubuntu:~$ grep 'com$' example.txt出力結果
www.example.com
example.com
sampledomain.com
community.com解説
com$は「行の末尾がcomで終わる行」を意味します。comで終わる行のみが表示されます。
4.空行を検索
行頭と行末を連続して指定する^$というパターンは、空行にマッチします。
user01@ubuntu:~$ grep '^$' example.txt出力結果
user01@ubuntu:~$ grep '^$' example.txt
user01@ubuntu:~$ 解説
- 空行が1つだけ表示されます。
grepコマンドはデフォルトでマッチした行を表示するため、空行もそのまま表示されます。
5.空行を除外して表示
grepコマンドの-vオプションを使用すると、マッチしなかった行を表示できます。^$にマッチする空行を除外するには、以下のようにします。
まず、catコマンドでexample.txtの内容を確認しておきます。
user01@ubuntu:~$ cat example.txt出力結果
www.example.com
www.testsite.net
ftp.example.org
www.opensource.org
example.com
testsite.net
sampledomain.com
mywebsite.net
yourportal.org
community.com
commercial.net
# 空行を含めるgrepコマンドの-vオプションを指定して実行します。
user01@ubuntu:~$ grep -v '^$' example.txt出力結果
www.example.com
www.testsite.net
ftp.example.org
www.opensource.org
example.com
testsite.net
sampledomain.com
mywebsite.net
yourportal.org
community.com
commercial.net
# 空行を含める解説
-vオプションは「マッチしなかった行を表示する」ことを意味します。^$にマッチする空行を除外し、その他の行をすべて表示します。
不要となったファイルの削除
user01@ubuntu:~$ rm example.txt位置にマッチするメタ文字のまとめ
| メタ文字 | 意味 |
|---|---|
^ | 行の先頭を示す。 |
$ | 行の末尾を示す。 |
まとめ
- 位置にマッチするメタ文字を使用することで、行の先頭や末尾に特定の文字列がある行を効率的に検索できます。
・^(キャレット):行の先頭を示す。
・$(ドルサイン):行の末尾を示す。 - 実践的な例として、URLリストやドメイン名の一覧から特定のドメイン(
comやnetなど)を持つ行を抽出できます。 - 空行の処理
・空行を検索するには、^$というパターンを使用します。
・空行を除外するには、grep -v '^$'とします。 - 正規表現と
grepコマンドを組み合わせることで、テキスト処理の幅が大きく広がります。
以上で、位置にマッチするメタ文字とgrepコマンドの解説を終わります。正規表現を活用することで、より高度なテキスト検索が可能になりますので、ぜひ活用してみてください。
