テキストの検索と置換

Bash:
テキストの検索と置換

How to: (方法)

# 文字列 'hello' を 'world' に置換する
echo "hello, hello!" | sed 's/hello/world/'

出力:

world, hello!
# すべての出現箇所を置換する ('g'オプション)
echo "hello, hello!" | sed 's/hello/world/g'

出力:

world, world!
# ファイル内のテキストを置換する
sed -i 's/old_text/new_text/g' example.txt

Deep Dive (掘り下げ)

UNIXシステムで1970年代以来使われてきた、sed (stream editorの略) はテキストの検索と置換で非常に有力です。awkgrep といったプログラムも似た用途に使われることがあります。それらはテキスト処理のための異なるアプローチと機能を提供します。

sed はパイプライン処理と組み合わせることができ、スクリプトでの自動化に適しています。-i オプションはファイル内の操作を直接行い、新しいファイルを作成することなく変更が適用されます。

検索と置換は正規表現と組み合わせて強化され、さらに複雑なパターンマッチングとテキスト操作が可能になります。例えば、次のようにしてメールアドレスのドメインを変更することができます。

echo "[email protected]" | sed 's/@example\.com/@newdomain\.com/'

sedはその強力さゆえ、複雑なパターンや大きなファイルを扱う際には注意が必要です。不正確な正規表現は予期せぬ結果を生むことがあります。また、特に大規模なファイルを扱うときは、実行速度が低下する可能性があります。

See Also (参照)