正規表現を使った高度な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.txtOR(|)による選択
|(パイプ)記号は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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 正規表現(Regex)入門
- 正規表現を使った高度なGrep
- 正規表現とsed/awkの組み合わせ
- キャプチャグループ、後方参照、置換