このページで解説している内容は、以下の 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.txt
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
# 空行を含める
ステップ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
コマンドの解説を終わります。正規表現を活用することで、より高度なテキスト検索が可能になりますので、ぜひ活用してみてください。