【セド】

sed とは?

💡 ファイルを開かずに中身を書き換える、テキスト界の魔法の杖
📌 このページのポイント
sed — ストリーム編集(検索・置換) 入力 Hello World Hello Japan Goodbye All Hello AI sed エンジン s/Hello/Hi/g 1行ずつ流しながら置換 出力 Hi World Hi Japan Goodbye All Hi AI sedの主な操作 s/A/B/g 置換 5d 行削除 /pattern/p パターン表示 -i ファイル直接編集
sedのイメージ
ひよこ ひよこ

sedって何をするコマンドなの?

ペンギン先生 ペンギン先生

テキストファイルの中身を、ファイルを開かずにコマンドだけで編集できるツールだよ。たとえば「ファイル内のappleを全部orangeに変えたい」なら sed コマンドで一発なんだ

ひよこ ひよこ

それってテキストエディタで置換するのと何が違うの?

ペンギン先生 ペンギン先生

手作業でファイルを1つずつ開く必要がないのが大きな違いだね。100個のファイルの設定値を一括で変えたいとき、エディタなら100回開いて置換する必要があるけど、sedならコマンド1行で全部終わるよ

ひよこ ひよこ

置換以外にもできることがあるの?

ペンギン先生 ペンギン先生

もちろん!特定の行を削除したり、特定のパターンがある行の後に新しい行を挿入したりもできるよ。行番号やパターンで範囲指定もできるんだ

ひよこ ひよこ

-i オプションをよく見かけるけど、これは何なの?

ペンギン先生 ペンギン先生

-iはファイルを直接書き換える「インプレース編集」のオプションだよ。これを付けないとsedは結果を画面に出すだけでファイルは変わらないんだ。ただし-iは元に戻せないから、大事なファイルには -i.bak でバックアップを作る癖をつけるといいよ

ひよこ ひよこ

sedって正規表現も使えるって聞いたけど、難しくないのかな?

ペンギン先生 ペンギン先生

基本的な正規表現はそのまま使えるよ。拡張正規表現を使いたいときは `-E` オプションを付ければOK。ちなみにsedにはパターンスペースとホールドスペースという2つのバッファがあって、これを駆使すると複数行にまたがる置換もできるんだ。ただ、そこまで行くとawkPerlの方が読みやすいけどね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「sed」って出てきたら「テキストを開かずにコマンドで一括置換・編集するツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Stream Editor」 = ストリームエディタ
💬 「ストリーム(流れ)」を「エディット(編集)」するという意味で、テキストが川のように流れてくるのを途中で加工するイメージだよ
← 用語集にもどる