Linux正規表現とワイルドカード:初心者向けガイド

  • URLをコピーしました!

Linuxでファイル検索やテキスト操作を行う際、正規表現ワイルドカードは非常に役立つツールです。
これらはパターンマッチングに用いられますが、機能や使い方に違いがあります。
この記事では、正規表現とワイルドカードの違いや基本的な使い方を詳しく解説し、初心者でも理解できるようにします。

目次

正規表現とワイルドカードの違い

正規表現

正規表現は、テキスト検索や文字列の操作に使われる高度なパターンマッチング手法です。
複雑な条件に基づいて文字列を検索することができます。

正規表現は、特定のパターンや文字列のセットを指定するために用いられる、
より詳細で強力なツールです。以下のように使用できます。

正規表現の例:

  • .:任意の1文字
  • ^abc:abcで始まる文字列
  • [A-Za-z]:アルファベット1文字
grep '^hello' file.txt

この例では、ファイル内で “hello” で始まる行を検索します。

ワイルドカード

ワイルドカードは、ファイル名やディレクトリ名のパターンを指定して、
シンプルに検索や操作を行うために使われます。
lsfindなどのコマンドと組み合わせて使用することが多いです。

ワイルドカードの例:

  • *:任意の文字列
  • ?:任意の1文字
  • [abc]:a、b、またはcのいずれか
ls *.txt

このコマンドでは、カレントディレクトリ内のすべての.txtファイルをリスト表示します。

正規表現とワイルドカードの一覧表

以下の図は、正規表現とワイルドカードの主要なパターンを一覧にしたものです。

正規表現説明ワイルドカード説明
.任意の1文字*0文字以上の任意の文字列
^行の先頭を指定?任意の1文字
$行の末尾を指定[abc]a, b, cのいずれか
[ ]指定した文字のいずれか[!abc]a、b、c以外の任意の1文字
[^ ]指定した文字以外の任意の1文字{a,b}aかbのどちらか
( )グループ化して、その部分をキャプチャ{a,b,c}aかbかcのどれか
*直前の文字が0回以上繰り返される**任意の階層のディレクトリやファイル
+直前の文字が1回以上繰り返される
?直前の文字が0回または1回現れる
{n}直前の文字がn回繰り返される
{n,m}直前の文字がn回以上m回以下繰り返される
\特殊文字のエスケープ
``OR条件(AまたはB)
\b単語境界を示す

正規表現を使った実践的な例

1. ファイル内の特定のパターンを検索

grep -E '^[A-Za-z]{5,}' file.txt

このコマンドでは、5文字以上の英字で始まる行をfile.txtから検索します。
grep-Eオプションは拡張正規表現を利用するために使われます。

2. テキストファイル内で複数の単語を検索

grep -E '(dog|cat)' animals.txt

ここでは、animals.txt内で
「dog」か「cat」のいずれかが含まれる行を検索します。

3. 特定の拡張子を持つファイルを検索

grep -E '\.txt$' filelist.txt

ファイル名が.txtで終わる行をfilelist.txtから検索します。
$を使って行の末尾を指定しています。
/を.の前に使用することにより.を文字として認識させています。

4. 複数の文字パターンを検索

grep -E '(dog|cat|bird)' animals.txt

このコマンドはanimals.txt内で
「dog」、「cat」、または「bird」を含む行を検索します。

5. 数字だけを含む行を検索

grep -E '^[0-9]+$' numbers.txt

この例では、numbers.txt内で数字だけを含む行を検索します。

ワイルドカードを使った実践的な例

1. 特定の拡張子を持つファイルの一覧表示

ls *.log

このコマンドは、カレントディレクトリ内で
.log拡張子を持つ全ファイルを表示します。

2. 特定の名前パターンを持つファイルの削除

rm file?.txt

file1.txt, file2.txtなど、
“file”に続く1文字のファイルを削除します。

3. 特定の文字列で始まるファイルを表示

ls file*.txt

このコマンドは、fileで始まり.txtで終わる
すべてのファイルをリスト表示します。

4. 特定の2文字のファイルを表示

ls file??.txt

fileに続く2文字が何であっても良いファイル
(例: file01.txt, fileAB.txt)を表示します。

5. 特定のディレクトリ内で複数階層のファイルを表示

ls **/*.txt

**を使って、現在のディレクトリとすべてのサブディレクトリにある
.txtファイルを表示します。

正規表現とワイルドカードの使い分け

正規表現

  • テキスト操作や文字列の詳細なパターンマッチングに最適。
  • 複雑なルールを用いて細かく文字列を操作できる。

ワイルドカード

  • ファイル名やディレクトリの簡単なパターンマッチングに最適。
  • コマンドライン操作で主に使用され、シンプルな検索や操作に役立つ。

まとめ

Linuxで効率的にファイルやテキストを操作するために、正規表現とワイルドカードは非常に重要なツールです。
ワイルドカードはシンプルなファイル操作に使い、正規表現は複雑なパターン検索に最適です。
どちらも使いこなすことで、Linuxでの作業がスムーズかつ効率的になります。

    目次