0Pricing
Linux Command Line & Bash Scripting Mastery · レッスン

正規表現を使った高度なGrep

「grep」で複雑な正規表現パターンを適用し、ファイル内を非常に細かく効率的に検索します。

「正規表現を使った高度なGrep」はCoddyKit上の無料Linux Command Line & Bash Scripting Masteryレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Command Line & Bash Scripting Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。

grepの正規表現パワー

正規表現を使った高度なgrepへようこそ。前のレッスンでは、正規表現(Regex)そのものについて学びました。ここでは、強力なgrepコマンドでその能力を最大限に引き出します。

grepは、ファイル内のテキストパターンを検索するための基本ツールです。高度な正規表現と組み合わせることで、パターンがどれほど複雑でも、探しているものを正確に見つけられます。

拡張正規表現の有効化(-E)

デフォルトでは、grepは基本正規表現(BRE)を使用します。+、?、|、()などのより高度な機能を使うには、拡張正規表現(ERE)を有効にする必要があります。

-Eオプションを使うか、実質的にgrep -Eと同じであるegrepコマンドを使うことで有効にできます。まず、操作用のサンプルファイルを作成しましょう。

echo "apple
banana
appanana
orange
app" > fruits.txt

量指定子:1回以上(+)

+量指定子は、直前にある文字またはグループの出現に対して1回以上マッチします。パターンが少なくとも1回は繰り返されると予想される場合に、とても便利です。

たとえば、「p」の後に1つ以上の「a」が続く行を探すには、pa+を使います。

grep -E 'pa+' fruits.txt

量指定子:0回以上(*)

*量指定子は、直前にある文字またはグループの出現に対して0回以上マッチします。文字が存在する可能性はあるものの、必須ではない場合に便利です。

「b」の後に0個以上の「a」が続く行を探してみましょう。

grep -E 'ba*' fruits.txt

量指定子:0回または1回(?)

?量指定子は、直前にある文字またはグループの出現に対して0回または1回マッチします。文字を任意に指定するものと考えるとよいでしょう。

「color」と「colour」の両方を探したい場合は、「u」を任意に指定できます。

echo "color
colour
coor" > words.txt
grep -E 'colou?r' words.txt

{}(波括弧)による回数指定

さらに細かく制御するには、波括弧{}を使って回数や範囲を正確に指定できます。

  • a{3}: 「a」がちょうど3個
  • a{2,}: 「a」が2個以上
  • a{1,3}: 「a」が1個以上3個以下

「a」がちょうど2回繰り返される行を探してみましょう。

grep -E 'a{2}' fruits.txt

アンカー:開始と終了(^、$)

アンカーは文字ではなく、位置にマッチします。^アンカーは行の先頭に、$は行の末尾にマッチします。

これは、パターンを行全体にマッチさせたり、意図した位置から正確に開始・終了させたりするうえで重要です。

  • ^apple: 「apple」で始まる行
  • banana$: 「banana」で終わる行
  • ^apple$: 「apple」だけを含む行
grep -E '^app' fruits.txt

OR(|)による選択

|(パイプ)記号はOR演算子として機能します。これにより、複数のパターンのいずれか一方にマッチさせられます。複数の異なる単語やフレーズを一度に検索する場合に非常に便利です。

たとえば、「apple」または「orange」を含む行を探すには、次のようにします。

grep -E 'apple|orange' fruits.txt

()によるパターンのグループ化

丸括弧()は、正規表現の一部をグループ化するために使います。これにより、量指定子や選択を1文字だけでなく、グループ全体に適用できます。

たとえば、「b」の後に「ana」が1回以上現れる箇所を探すには、次のようにします。

grep -E 'b(ana)+' fruits.txt

クイックチェック:高度なgrep

次の内容を含むdata.txtファイルがあるとします。

cat
cats
catt
catterpillar
dog

「cat」の後に「t」が0個以上続く行を正しく検索するコマンドはどれでしょうか。

おさらい:grepの正規表現パワー

拡張正規表現を使った高度なgrepのテクニックを習得しました。次の内容を扱いました。

  • 拡張正規表現の機能に-Eを使うこと。
  • 量指定子:+(1回以上)、*(0回以上)、?(0回または1回)、特定の回数を指定する{}。
  • アンカー:^(行の先頭)と$(行の末尾)。
  • 「OR」条件に使う選択|。
  • ()によるパターンのグループ化。

これらのツールを使えば、非常に正確で柔軟なテキスト検索を実行でき、コマンドラインの達人になれます。

よくある質問

「正規表現を使った高度なGrep」レッスンは無料ですか?

はい。「正規表現を使った高度なGrep」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Command Line & Bash Scripting Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Command Line & Bash Scripting Masteryコースには全4レッスンが含まれています。

「正規表現を使った高度なGrep」で何を学びますか?

「grep」で複雑な正規表現パターンを適用し、ファイル内を非常に細かく効率的に検索します。 ブラウザで直接実行するハンズオンコードでLinux Command Line & Bash Scripting Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Linux Command Line & Bash Scripting Masteryを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLinux Command Line & Bash Scripting Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「正規表現を使った高度なGrep」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLinux Command Line & Bash Scripting Masteryレッスンでコードを書いて実行できますか?

はい。すべてのLinux Command Line & Bash Scripting Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 正規表現(Regex)入門
  2. 正規表現を使った高度なGrep
  3. 正規表現とsed/awkの組み合わせ
  4. キャプチャグループ、後方参照、置換
← Linux Command Line & Bash Scripting Masteryに戻る