sed – ストリームエディタ(テキストを加工・編集するコマンド)

置換・変換

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 内の localhost127.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 版と異なるため注意が必要です。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント