sed コマンドは、テキストを行単位で処理し、置換・削除・抽出などを行うストリームエディタです。
実務では、ログファイルの不要部分を削除したり、設定ファイルの特定文字列を一括置換する際に利用されます。
構文(Syntax)
sed [オプション] 'スクリプト' [FILE...]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-e SCRIPT | 実行する編集スクリプトを指定 | sed -e 's/foo/bar/' file.txt |
-f FILE | 編集コマンドをファイルから読み込み | sed -f script.sed file.txt |
-i[SUFFIX] | ファイルを直接編集(インプレース編集)。SUFFIXを指定するとバックアップ作成 | sed -i.bak 's/foo/bar/' file.txt |
-n | 自動出力を抑制(p コマンドと組み合わせる) | sed -n '2p' file.txt |
-r / -E | 拡張正規表現を使用(GNUでは -E 推奨) | `sed -E ‘s/(foo |
実行例
文字列の置換(最初に一致したものだけ)
sed 's/error/ERROR/' logfile.txt
出力例:
[ERROR] system failed
文字列の置換(行内すべてを対象、g オプション)
sed 's/foo/bar/g' file.txt
特定行の削除
sed '3d' file.txt
出力例: (3行目が削除されて表示される)
2〜4行目を表示
sed -n '2,4p' file.txt
インプレース編集(直接ファイルを書き換え)
sed -i 's/localhost/127.0.0.1/' config.txt
(config.txt 内の localhost が 127.0.0.1 に置換される)
複数の置換を実行
sed -e 's/foo/bar/g' -e 's/baz/qux/g' file.txt
バックアップ付きでインプレース編集
sed -i.bak 's/old/new/g' data.txt
(編集前のファイルが data.txt.bak として保存される)
エラー例(存在しないファイルを指定)
sed 's/foo/bar/' missing.txt
出力例:
sed: can't read missing.txt: No such file or directory
関連コマンド
grep: パターン検索に特化awk: テキスト抽出・加工のための強力な処理系tr: 文字の置換や削除perl: 複雑なテキスト処理を行えるスクリプト言語
備考
sedは標準入力からも処理可能(例:echo "test" | sed 's/test/ok/')。- 複雑な処理では
awkやスクリプトファイルと組み合わせて使うことが多いです。 - BSD 系では
-iオプションの挙動が GNU 版と異なるため注意が必要です。
参考
- manページ: man7.org sed(1)
- GNU sed: https://www.gnu.org/software/sed/

コメント