LPIC101_regex_B18

>100 Views

April 22, 26

スライド概要

profile-image

はじめまして、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

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

L P I C L e v e l 1 — 1 0 1 試 験 / 主 題 1 0 3 . 7 grep と 正規表現 — ログから目当ての行だけ抜き出す技術 — 「パターン→ファイル」の順序さえ守れば怖くない! 新卒未経験・文系向け 図解強化版 ALJ Education Plus / 面白きなき世を面白く

2.

W ARM -U P 2 / 16 問18 を振り返ろう 問18 / 60問 正規表現 ここがポイント タイムスタンプ DD/MM/YYYY:hh:mm:ss 形式の ログから、午後3時台(15時台)のエントリを 抽出するコマンドはどれですか。 grep -E → 拡張正規表現 ON [0-9]+ → 数字が1文字以上 grep -E ':15:[09]+:[09]+' access.log grep -E ':15:[00]+' access.log 構文は grep [OPT] パターン ファイル grep -E access.log ':15:[0-9]+:[0-9]+' grep access.log ':15:[0-9]:[0-9]' 選択肢③は ファイルとパターンが逆! grep -E ':15:[0-9]+:[0-9]+' access.log → この問題を 100% 自信を持って解けるようになりましょう!

3.

AGE NDA 3 / 16 今日のゴール 1 2 3 4 grep の正体 「検索の王様」grep がどんなコマンドか、名前の由来まで分かる 正規表現のキホン [0-9]+ や . * など、メタ文字の意味を図で理解できる grepの構文 grep [OPT] パターン ファイル の順序を身につける 問18を解ける ログから特定時間帯のエントリを抽出する式を自力で書ける 「正規表現はパズル」— メタ文字を覚えて当てはめるだけ。文系でも絶対できます!

4.

① この用語 4 / 16 grep(グレップ)って? 一行で言うと ファイルの中から、条件に合う行だけ抜き出す コマンド grep 3つの特徴 1 毎日使う実務最頻出コマンド ログ調査・設定ファイル検索の定番 Global Regular Expression Print 2 = ファイル全体から正規表現で 一致した行を印字する 3 正規表現とセットで覚える パターンで柔軟に検索できる LPIC 101 主題 103.7 の中心 必ず試験に出る! 大文字を含む「GREP」ではなく、すべて小文字の「grep」で使います。

5.

① この用語 5 / 16 正規表現(regex)って? 例えば…「電話番号っぽい行」を探したい 文字のベタ検索だと… grep "090-1234-5678" data.txt → 「090-1234-5678」しか見つからない。 他の番号は全部スルー… regex 正規表現なら… Regular Expression grep -E "[0-9]{3}-[0-9]{4}-[0-9]{4}" data.txt = 文字列のパターンを 記号で書く「検索の設計図」 → 090-1234-5678 080-9999-0000 すべての電話番号がヒット! grep + 正規表現 = 実務のスーパーパワー

6.

② 簡単に書くよ ※ 正確な表現ではございません 6 / 16 うさうさラーメン店の注文台帳で例えるよ 店長の悩み:「今日の午後3時台だけ何杯出たか知りたい!注文台帳を1行ずつ読むのはムリ…」 注文台帳 (access.log) 抽出結果 22/04/2026:13:22:01 醤油 ←朝 22/04/2026:14:55:42 味噌 ←昼 22/04/2026:15:03:11 塩 22/04/2026:15:27:59 豚骨 ← 22/04/2026:15:48:02 醤油 ← 22/04/2026:16:15:30 味噌 ←夕 22/04/2026:19:02:44 塩 ←夜 ← 「15時台だけ ちょうだい」 22/04/2026:15:03:11 塩 22/04/2026:15:27:59 豚骨 22/04/2026:15:48:02 醤油 grep -E → 店長「ありがとー! 3杯だね、グラフ作ろう」 この世界の対応表:注文台帳 = access.log / 3時台の注文 = パターン / 店長 = grepコマンド

7.

③ 詳しく書くよ ※ 原理原則 7 / 16 grep の構文 — 順序が超・大事! grep [OPTIONS] PATTERN FILE コマンド名 オプション(任意) 検索パターン(必須) 対象ファイル(必須) 正しい順序 これはダメな例 grep -E 'pattern' file.txt grep -E file.txt 'pattern' ✓ パターンが先、ファイルが後 ✓ パターンはシングルクォートで囲む (シェル解釈を防ぐ) ✗ ファイルとパターンが逆 ✗ grep は「最初の引数 = パターン」と 認識する。file.txt を正規表現として 解釈しようとして失敗 覚え方:grep【道具】【オプション】【何を】【どこで】

8.

③ 詳しく書くよ ※ 原理原則 8 / 16 基本正規表現(BRE) vs 拡張正規表現(ERE) 正規表現には「基本(BRE)」と「拡張(ERE)」の2種類。grep はデフォルトで BRE、-E で ERE になる。 書き方 grep(デフォルト) grep -E / egrep . * ^ $ [] そのまま使える そのまま使える + ? {} | () \ でエスケープ必要 例:\+ \? \{\} そのまま使える 例:+ ? {} どちらを使う? 単純な検索に 実用・複雑な検索に(推奨) LPIC での出題 違いを問う問題は頻出 -E の書式例は必出 実務と試験対策:迷ったら grep -E を使う。パターンがシンプルで済む=ミスが減る!

9.

③ 詳しく書くよ ※ 原理原則 9 / 16 メタ文字チートシート(これだけ覚えよう) 記号 意味 例 マッチする例 . 任意の1文字 a.c abc, a1c, a c * 直前の文字を0回以上 ab* a, ab, abb, abbb + 直前の文字を1回以上 (ERE) ab+ ab, abb, abbb(a単独はNG) ? 直前の文字を0か1回 (ERE) colou?r color, colour ^ 行頭 ^Error Error: xxx $ 行末 \.log$ access.log [abc] a か b か c gr[ea]y gray, grey [0-9] 数字1文字 [0-9] 0, 1, 2, … 9 [0-9]+ 数字1文字以上 (ERE) :[0-9]+: :15:, :123: または (ERE) cat|dog cat, dog | + ? | ( ) { } は -E なしだと使えない(\で逃がす必要あり)。-E で素直に書こう!

10.

③ 詳しく書くよ ※ 原理原則 10 / 16 問18の正解を分解してみよう grep -E ':15:[0-9]+:[0-9]+' access.log パターン :15:[0-9]+:[0-9]+ を部品ごとに見ていく 部品 1 部品 2 部品 3 部品 4 :15: [0-9]+ : [0-9]+ コロン+「15」+コロン =時刻部分の「15時」を固定 数字1文字以上 =分の数(01, 27, 48など) 区切りのコロン そのまま書くだけ 数字1文字以上 =秒の数(11, 59, 02など) 全部つなげると → 「15時 : ○○(分) : ○○(秒)」にマッチするログを抽出!

11.

③ 詳しく書くよ ※ 原理原則 5つの選択肢を一気に検証! 1 2 3 4 5 grep -E ':15:[09]+:[09]+' access.log [09]は「0か9」のみ。1〜8がマッチしない grep -E ':15:[00]+' access.log [00]は「0」のみ。時刻全体を表せない grep -E access.log ':15:[0-9]+:[0-9]+' ★パターンとファイルの順序が逆! grep access.log ':15:[0-9]:[0-9]' 順序が逆 & -E なし & 数字1桁しか取れない grep -E ':15:[0-9]+:[0-9]+' access.log 順序OK、-E OK、[0-9]+ で数字複数桁OK 11 / 16

12.

④ 一言でまとめるよ! 12 / 16 原理原則 grep は 〈-E〉〈パターン〉〈ファイル〉の順で書く。 [0-9]+ のように「+」を使うなら -E を忘れずに。 順番と -E、これさえ押さえれば正規表現は怖くない。 順序 -E クォート パターン→ファイル + ? | { } ( ) が書ける '…' で囲むのが安全 この三本柱をうさうさラーメン店の暖簾に掲げておこう!

13.

ディストリビューション差異 13 / 16 Ubuntu と RedHat系で違いはある? 結論:grep コマンドの動作は Ubuntu も RedHat も同じ!(どちらも GNU grep) Ubuntu RedHat / CentOS / Rocky パッケージ パッケージ grep (標準インストール済み) grep (標準インストール済み) パス パス /usr/bin/grep または /bin/grep /usr/bin/grep バージョン確認 バージョン確認 grep --version grep --version インストール インストール sudo apt install grep (通常不要) sudo dnf install grep (通常不要) egrep / fgrep は非推奨。grep 3.8以降では警告が出る → grep -E / grep -F を使おう

14.

HANDS -ON 14 / 16 実機で試してみよう(安全です!) grep は読み取り専用のコマンド。どれだけ実行しても、ファイルを壊すことはありません bash — ~/kensyuu # ① 練習用ログを作る $ cd ~/kensyuu && mkdir -p grep_lab && cd grep_lab $ cat > access.log << EOF 22/04/2026:13:22:01 soy_sauce 22/04/2026:15:03:11 salt 22/04/2026:15:27:59 tonkotsu 22/04/2026:16:15:30 miso EOF # ② 15時台だけ抽出(問18の解答式!) $ grep -E ':15:[0-9]+:[0-9]+' access.log 22/04/2026:15:03:11 salt 22/04/2026:15:27:59 tonkotsu 慣れたら -i(大小無視)-n(行番号)-c(件数)-v(不一致) も試してみよう!

15.

PIT FALLS 15 / 16 よくある落とし穴 TOP5 1 2 3 4 5 パターンとファイルの順序を逆に書く ✗ grep -E file.txt 'pattern' grep -E 'pattern' file.txt -E なしで + や { } を使ってしまう ✗ grep '[0-9]+' data.txt (+ が効かない) grep -E '[0-9]+' data.txt パターンを囲まずシェルに解釈される ✗ grep -E $HOME data.txt (変数展開される) grep -E '$HOME' data.txt (シングルクォート) [0-9]+ と [09]+ を混同 ✗ [09]+ = 「0か9」が1回以上(1〜8がNG) [0-9]+ = 「0〜9」が1回以上(正解) egrep / fgrep を書いてしまう(非推奨) ✗ egrep 'pattern' file (警告が出る) grep -E 'pattern' file

16.

W RAP -U P 16 / 16 まとめ & 公式リソース 今日の3つのキー 1 2 原理原則を学ぶ公式リソース grep [-E] 'パターン' ファイル LPI Learning Materials 103.7 (JP) 順序は絶対! learning.lpi.org/ja/learning-materials/101-500/103/103.7/ -E で拡張正規表現が使える + ? | { } ( ) が素直に書ける LPIC-1 Exam 101 主題一覧 (LPI) lpi.org/ja/our-certifications/exam-101-objectives LPI日本支部 今日の一題(103.7演習) 3 [0-9]+ = 数字1文字以上 lpi.jp/today/list_exam.phtml?cls2_code=6 「+」が効くのは -E があるから 小豆本 p.113〜 正規表現 / p.116〜 grep LPICレベル1 スピードマスター問題集 対応 「面白きなき世を面白く」— grep も正規表現も、分かれば面白い!