【セド】

sed とは?

最終更新:
💡 流れるテキストを、コマンドで加工する

ファイルや標準入力のテキストを読み、置換・行削除などの処理を行うストリームエディタ。通常は処理結果を標準出力へ送り、入力ファイルを直接変更するには対応するオプションなどが必要。

📌 このページのポイント
入力を加工し、標準出力へ送る入力Hello WorldHello AIseds/Hello/Hi/出力Hi WorldHi AI通常、入力ファイルは変わらない例:各行の最初のHelloを置換
入力からsedへ、処理結果から出力へ進む流れ。各行にHelloが一つある例です。ファイルの直接編集には対応する指定が必要です。
ひよこ ひよこ
sedって何をするコマンドなの?
ペンギン先生 ペンギン先生
ファイルや他のコマンドから受け取ったテキストを加工するよ。例えば sed 's/Hello/Hi/' input.txt は、各行の最初のHelloをHiに置き換えた結果を標準出力へ送る。元のinput.txtはこの例では変更しないんだ
ひよこ ひよこ
エディタで置換するのと何が違うの?
ペンギン先生 ペンギン先生
対話的な編集画面を開かず、指定した処理を入力に適用できるんだ。繰り返す処理や、他のコマンドの出力をパイプで加工するときに便利だよ。エディタにも複数ファイルの一括置換機能があるので、手作業しかできないわけではないね
ひよこ ひよこ
置換以外にもできることがあるの?
ペンギン先生 ペンギン先生
行番号やパターンを使って対象を選び、行を削除したり表示したりできるよ。例えば sed -n '/ERROR/p' log.txt はERRORを含む行だけを出力する。-nで通常の自動出力を止め、pで選んだ行を表示しているんだ
ひよこ ひよこ
-i オプションをよく見かけるけど、何なの?
ペンギン先生 ペンギン先生
GNU sedでは入力ファイルを直接編集する指定だよ。-i.bakのように接尾辞を付けると変更前のバックアップを作れる。-iの書式は実装によって異なるので、自分の環境の説明を確認しよう。結果の確認と必要なバックアップをしてから使うんだ
ひよこ ひよこ
正規表現や複数行も扱える?
ペンギン先生 ペンギン先生
検索パターンには正規表現を使えるよ。GNU sedでは-Eで拡張正規表現を指定する。通常は行を読みながら処理するけれど、Nなどで複数行を扱うこともできるので、常に一行だけしか編集できないツールではないんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「sed」って出てきたら「入力テキストをコマンドで加工して出力するツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Stream Editor」 = ストリームエディタ
💬 「ストリーム(流れ)」を「エディット(編集)」するという意味で、テキストが川のように流れてくるのを途中で加工するイメージだよ

参考資料

← 用語集にもどる