LPIC101_sed_B23

-- 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.

LPIC-101 v5.0 | 小豆 本対 応 sed の s/// 置換 デフォルトは各行「最初の1回」だけ。g で全部。 新卒・文系・未経験のための IT 研修 文字クラス [ABC][0-9] の解釈も合わせて理解 うさうさラーメン店方式

2.

PROBLEM 今日のお題 ― B問題セット 問23 正規表現 s/[ABC][0-9]/##/ を文字列 'A1B2C3' に適用した場合の結果はどれですか。 1 ##B2C3 2 A1##C3 3 A1B2## 4 ###### 5 A1B2C3 ※ 単一選択(正解は1つ) LPIC-101 | sed の s/// はデフォルトで最初のマッチだけ 2 / 10

3.

① この用語 s/パターン/置換/ の基本構造 用語 s/// 命令 sed の substitute(置換) うさうさラーメン店で例えると お客「辛味噌を味噌に変えて」 → 最初の辛味噌だけを味噌に。 2杯目以降の辛味噌は据え置き 書式: s/pattern/replacement/ ↓ 動作: 各行の 最初のマッチのみ置換。 全部置換したい時は末尾に g フラグを付ける。 s/辛味噌/味噌/ → 最初の1つだけ変更 s/辛味噌/味噌/g → g を付けると全部 g = global (全件) LPIC-101 | sed の s/// はデフォルトで最初のマッチだけ 3 / 10

4.

② 簡単に パターン [ABC][0-9] は「2文字」 [ABC][0-9] [ABC] = A/B/Cのどれか1文字 + [0-9] = 数字1文字 → 合計 2文字 にマッチする 'A1B2C3' のマッチ候補 先頭 中央 末尾 A1 B2 C3 ★ これだけ選ばれる 通常は選ばれない 通常は選ばれない LPIC-101 | sed の s/// はデフォルトで最初のマッチだけ 4 / 10

5.

③ 詳しく① 1 2 3 4 置換の流れを1ステップずつ 入力 1行の文字列として渡される A1B2C3 左から走査 2文字ずつ見てパターンと照合 A1 B2 C3 最初のマッチを発見 先頭の A1 がパターンに合致 [A1] B2 C3 置換して終了 g フラグがないのでここで停止 ## B2 C3 ★ 結論: A1 が ## に置換され、残り B2C3 はそのまま → ##B2C3 LPIC-101 | sed の s/// はデフォルトで最初のマッチだけ 5 / 10

6.

g フラグを付けたら「全部置換」 ③ 詳しく② sedのデフォルトは「最初の1回だけ」。g を付けると「行内の全マッチ」を置換する。 g なし(デフォルト) g 付き(global) s/[ABC][0-9]/##/ 入力: s/[ABC][0-9]/##/g 入力: A1B2C3 A1B2C3 ↓ ↓ 出力: 出力: ##B2C3 ###### 最初のA1だけ置換 A1・B2・C3 すべて置換 LPIC-101 | sed の s/// はデフォルトで最初のマッチだけ 6 / 10

7.

③ 詳しく③ 実機で確認(Ubuntu / RHEL 共通) Terminal ― sed 置換を試す # ★ 問題と同じ条件(g なし) $ echo 'A1B2C3' | sed 's/[ABC][0-9]/##/' ##B2C3 # g を付けると全部置換 $ echo 'A1B2C3' | sed 's/[ABC][0-9]/##/g' ###### # 2回目だけ置換したい(2 は2つ目の意味) $ echo 'A1B2C3' | sed 's/[ABC][0-9]/##/2' A1##C3 # 最後のマッチだけは -E 等と後方参照が必要(直接の記法はない) LPIC-101 | sed の s/// はデフォルトで最初のマッチだけ 7 / 10

8.

APPLY 原理原則で5択を斬る # コマンド 判定 理由 1 ##B2C3 ○ 正解 先頭 A1 が最初のマッチ。g なしなのでここで終了。正解 2 A1##C3 × 誤り 2番目のマッチ B2 を置換した結果。/2 フラグを付けたとき 3 A1B2## × 誤り 最後のマッチに置換した結果。sed のデフォルト挙動ではない 4 ###### × 誤り 全部置換した結果。g フラグが付いている場合の出力 5 A1B2C3 × 誤り マッチしなかった場合の結果。実際はマッチする → 正解は 1番。sed の s/// は「デフォルトで最初の1回だけ」。 LPIC-101 | sed の s/// はデフォルトで最初のマッチだけ 8 / 10

9.

ANSWER 正解 ― 最初のマッチだけ置換 正解 ① ##B2C3 A1 が最初のマッチ。g フラグなしでここで終了 フラグによる結果の違い(A1B2C3 に対して) なし(デフォルト) g(global) 2(2番目) ##B2C3 ###### A1##C3 ★ 今回の正解 LPIC-101 | sed の s/// はデフォルトで最初のマッチだけ 9 / 10

10.

④ 原理原則・一言でまとめ sed の s/// は 「各行・最初の1回だけ」がデフォルト。全部は g。 なし g 2/3… 最初の1回 全部 N番目だけ パターン [ABC][0-9] は「文字クラス2個」= 2文字にマッチ 面白きなき世を面白く ─ 石黒 友季子