ホーム > テキスト処理・検索 > sed

sed: テキストストリームエディタ

sed(stream editor)は、テキストストリームを編集するための強力なUNIXユーティリティです。ファイルやパイプを介して渡される入力に対して正規表現を使用して、テキストの変換、フィルタリング、削除、挿入などの操作を実行します。非対話型編集に最適化されており、スクリプトでの自動化されたテキスト処理に広く使用されています。

概要

sedは、入力ストリーム(ファイルまたは標準入力)を1行ずつ読み込み、指定されたスクリプト(コマンド)を適用した後、結果を標準出力に出力します。主にテキストファイルのコンテンツの変更、特定のパターンの検索と置換、行の削除などに活用されます。

主な機能

  • 正規表現を使用した強力なパターンマッチング
  • テキスト置換 (substitution)
  • 行削除 (deletion)
  • 行挿入および追加 (insertion/appending)
  • ファイル内容の直接編集 (-i オプション)

主なオプション

sedコマンドの主なオプションは、スクリプトの指定方法や出力動作を制御します。

スクリプトおよび動作制御

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`sed` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

sedの様々な活用例を通じて、テキスト処理方法を習得しましょう。

特定文字列の置換

sed 's/old_text/new_text/g' filename.txt

ファイル内の「old_text」を「new_text」に全て置換します。「g」フラグは、1行の全ての該当箇所を置換します。

特定パターンを含む行の削除

sed '/error/d' logfile.txt

「error」という単語を含む全ての行を削除します。

ファイル内容の直接編集

sed -i.bak 's/DEBUG=true/DEBUG=false/g' config.txt

元の「config.txt」ファイルで「DEBUG=true」を「DEBUG=false」に変更し、「.bak」拡張子でバックアップファイルを作成します。

最初の5行のみ出力

sed -n '1,5p' data.txt

ファイルの最初の5行のみを出力します。「-n」オプションと「1,5p」コマンドを使用します。

空行の削除

sed '/^$/d' document.txt

ファイルから完全に空の行を削除します。

ヒントと注意点

sed使用時の注意点と効率的な活用ヒントです。

sed -d オプションに関する誤解

提供された「sed-d」のヒントに関して、「-d」はsedの有効なコマンドラインオプションではありません。sedコマンドは、「-e」、「-f」、「-i」、「-n」などのオプションを使用します。もし「sed -d」を実行すると、sedは「-d」をオプションではなくファイル名として解釈するか、未知のオプションエラーを発生させる可能性があります。

d コマンドの正しい使用法

「d」は、sedスクリプト内で特定の行を削除するために使用されるコマンドです。例えば、「sed '/pattern/d' filename」は、「pattern」を含む全ての行を削除します。これはコマンドラインオプション「-d」とは全く異なる概念です。

d コマンド使用例

sed '/削除する文字列/d' input.txt > output.txt

ファイルから「削除する文字列」が含まれる行を削除します。

正規表現の活用

sedの強力さは正規表現にあります。様々なメタ文字(例: `^`, `$`, `*`, `+`, `?`, `.` など)を習得すると、複雑なパターンマッチングや置換が可能になります。

  • `^`: 行の先頭
  • `$`: 行の末尾
  • `.`: 全ての単一文字
  • `*`: 直前の文字が0回以上繰り返される
  • `s/old/new/g`: 全ての「old」を「new」に置換
  • `/pattern/d`: 「pattern」がある行を削除

バックアップファイルの作成を習慣化する

「-i」オプションでファイルを直接編集する際は、常にバックアップ接尾辞を指定して元のファイル損失を防ぐことをお勧めします(例: `sed -i.bak ...`)。



同じカテゴリのコマンド