概要
入力を一行ずつ処理し、置換、削除、抽出、整形を行います。ワンライナーでの自動整形や一括置換に向きます。
基本構文
sed [オプション]... 'スクリプト' [ファイル]...詳細解説
sedは、入力を流しながら編集するコマンドです。最も有名なのはs/旧/新/の置換ですが、行削除、特定範囲の抽出、パターン一致時だけの処理など、多くの編集を非対話で実行できます。
grepが『探す』道具なら、sedは『探して書き換える』道具です。ログや設定の整形、一括置換、不要行の除去に非常に便利です。正規表現を使うため、検索と編集の両面で理解が深まります。
ただし、-iによる直接書換えは便利な反面、誤置換時の影響が大きいです。まずは標準出力へ結果を確認し、その後で直接編集へ進む流れが安全です。
このコマンドを使う場面
一括置換、不要行削除、一部分だけの表示、簡単な整形を非対話で行いたい時に使います。
まず安全に試す方法
1. printf 'port=8080n' > app.conf
2. sed 's/8080/9090/' app.conf
3. sed -n '1p' app.conf
4. sed '/^#/d' app.conf
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
小さな設定ファイルを用意し、sedで標準出力への置換結果を確認します。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.4 正規表現を使用したテキストファイルの検索根拠: officialsedは、正規表現を使った検索や置換を学ぶ中核です。
-
LPIC-1
範囲: 103.7 正規表現を使用したテキストファイルの検索根拠: officialsedは、LPIC-1で正規表現による検索と加工を扱う中心的なコマンドです。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorialsedは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。
実行結果サンプル
-
printf 'anbn' | sed 's/b/B/'a B
戻り値コード
- 0 正常終了。処理に成功しました。
- >0 構文誤り、読取失敗、直接書換え失敗などで失敗しました。
使用例
sed 's/old/new/' file.txtsed -n '1,10p' file.txtsed '/^#/d' config.inised -i 's/8080/9090/' app.conf
よくあるエラー
-
-iで元ファイルを壊してしまった 原因: 結果確認前に直接書換えしました。対処: まず-iなしで結果を確認し、必要ならバックアップ付きで実行します。
-
正規表現が期待通りに動かない 原因: 基本正規表現と拡張正規表現を混同しています。対処: 必要に応じて-Eを使い、記法差を整理します。
導入・互換性情報
POSIX sedとGNU sedでは-Eや-iの細部が異なることがあります。移植性が必要なら、拡張に依存しすぎない記述を心掛けます。
注意点 / セキュリティリスク
危険度は中程度です。特に-iは元ファイルを書き換えるため、正規表現や置換対象を誤ると被害が出ます。まずは-iなしで結果確認するのが基本です。
FAQ
-
Q. grepとの違いは何ですか。 A. grepは抽出中心、sedは抽出に加えて置換や削除など編集も行えます。
関連用語
参照リンク
- カテゴリー: Text Processing
- レベル: Practical
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎