-- Views
April 22, 26
スライド概要
はじめまして、ALJ Education Plus 株式会社のyukikoと申します。 IT教育支援や、DX推進が可能です。 ◆ スキル LPIC レベル2 AI / Python Splunk BI(データ可視化・分析) ◆ その他 新卒・未経験の学生向けに、エンジニア転職を応援する資料を趣味で作成しています。 もしよろしければご活用ください。 ◆IT研修講師をお探しの方は [email protected] にお気軽にお問い合わせください。 ※ALJ Education Plus 株式会社を通して、ご支援させていただきます。 ◆Zenn https://zenn.dev/yukiko_sapporo/articles/46c13e9f98b110
LPIC-101 v5.0 | 小豆 本対 応 egrep コマンド grep -E と同じ。+ ? | ( ) が使える拡張版 新卒・文系・未経験のための IT 研修 pgrep / locate / find との違いもまとめて整理 うさうさラーメン店方式
PROBLEM 今日のお題 ― B問題セット 問25 拡張正規表現を使用してファイルの内容をパターン検索できるコマンドはどれですか。 1 pgrep 2 locate 3 egrep 4 reggrep 5 find ※ 単一選択(正解は1つ) LPIC-101 | egrep ― 拡張正規表現で検索 2 / 10
① この用語 egrepって、なに? 用語 egrep Extended grep / grep -E と同じ ファイル内の行を検索する grep の拡張版。 ERE(拡張正規表現)対応で、 + ? | ( ) がエスケープなしで 使える。 egrep = grep -E と完全に等価。 LPIC-101 | egrep ― 拡張正規表現で検索 うさうさラーメン店で例えると 注文票の山から探す: 「ネギ or メンマ入り」 のように複雑な条件で絞りたい ↓ egrep 'ネギ|メンマ' = 「どっちか入ってる注文票」 を一発で抽出 grep だと \| でエスケープ必要 3 / 10
② 簡単に grep(BRE) と egrep(ERE) の違い grep (BRE) egrep (ERE) 基本正規表現 拡張正規表現 [a-z] ✓ 文字クラスは共通 [a-z] ✓ 文字クラス共通 * ✓ 0回以上繰り返し + ✓ 1回以上 + ? | ( ) ✗ \ でエスケープが必要 a|b ✓ どちらかにマッチ ★ 「grep -E = egrep」。+ ? | ( ) を素で使いたいなら egrep LPIC-101 | egrep ― 拡張正規表現で検索 4 / 10
③ 詳しく① 5つの「検索」コマンドの住み分け コマンド 何を探す 探す場所 検索方法 egrep ファイルの中身 各ファイルの行 拡張正規表現 grep ファイルの中身 各ファイルの行 基本正規表現 pgrep プロセス プロセステーブル プロセス名 locate ファイル名 事前DB 名前の部分一致 find ファイル名・属性 ファイルシステム 条件指定 ★ 「ファイルの中身を正規表現で」= grep 系。他は対象が違う LPIC-101 | egrep ― 拡張正規表現で検索 5 / 10
③ 詳しく② + ERE でパワーアップする4つのメタ文字 1回以上 ? ab+c マッチ: abc, abbc, abbbc... | 0〜1回 colou?r マッチ: color, colour OR(交替) ( ) cat|dog マッチ: cat または dog グループ化 (ab)+ マッチ: ab, abab, ababab... ※ これらは grep(BRE) では \+ \? \| \( \) とエスケープが必要。egrep ならそのまま。 LPIC-101 | egrep ― 拡張正規表現で検索 6 / 10
③ 詳しく③ 実機ハンズオン + 最新の注意点 Ubuntu 22.04+ / RHEL 9+ では egrep 実行時に非推奨warn(GNU grep 3.8〜)が出る場合あり Terminal ― egrep を試す # OR検索 (egrep なら簡単) $ egrep 'error|warn' app.log [ERROR] DB connect [WARN] slow query # 1回以上 (+) $ echo aabbb | egrep 'b+' aabbb 最近の実機での注意 Ubuntu 22.04+ / RHEL 9+ GNU grep 3.8〜で egrep は 非推奨警告 (obsolete) が出るように。 推奨: grep -E に置き換え # grep -E でも同じ結果 $ grep -E 'error|warn' app.log # grep(BRE)なら \| が必要 $ grep 'error\|warn' app.log ✓ LPIC試験では egrep もまだ正解扱い。 実機では grep -E が無難 LPIC-101 | egrep ― 拡張正規表現で検索 7 / 10
APPLY 原理原則で5択を斬る # コマンド 判定 理由 1 pgrep × 誤り Process grep。プロセス名で検索。ファイル内容は対象外 2 locate × 誤り 事前作成DBでファイル名検索。ファイルの中身は見ない 3 egrep ○ 正解 grep -E と等価。ERE (拡張正規表現) でファイル内容を検索 4 reggrep × 誤り 存在しないコマンド。「regular + grep」っぽい造語の罠 5 find × 誤り ファイル名・属性で検索。-name のワイルドカードで中身は見ない → 正解は 3番 egrep。「ファイルの中身 + 拡張正規表現」は egrep だけ。 LPIC-101 | egrep ― 拡張正規表現で検索 8 / 10
ANSWER 正解 ― egrep = grep -E 正解 ③ egrep 拡張正規表現(ERE)でファイルの中身をパターン検索 grep ファミリーの整理 grep egrep fgrep BRE ERE 固定文字 基本版 = grep -E = grep -F LPIC-101 | egrep ― 拡張正規表現で検索 9 / 10
④ 原理原則・一言でまとめ egrep は 「ファイルの中身」を「拡張正規表現」で検索。 + | () 1回以上 OR(どちらか) グループ化 egrep ≡ grep -E。pgrep/locate/find は対象が違う 面白きなき世を面白く ─ 石黒 友季子