コンテンツにスキップ

Top

sedによるテキストの置換

複数のテキストファイルの決まった文字列を一括置換したい場合がある。
そのような場合、sedを使うと容易にできる。

注意!! バックアップをとれ!

操作を間違えるとファイルが消えたりする場合もある。

必ずバックアップを取ってから実行すること。

文字列の置き換え

まずは単一ファイルで。
trueとなっているところをfalseに変えるコマンドは以下。

sed -i -e "s/true/false/g" tmp.txt

とても簡単。

-iを付けないとただ標準出力するだけ。
とりあえずの確認としては良い。

絶対してはいけないこと

標準出力するんけ、じゃぁリダイレクトするか!

sed -e "s/true/false/g" tmp.txt > tmp.txt

・・・ふぁっ!

ファイルが空になった!!!

そう、直接リダイレクトするとファイルが空になります。

リダイレクトなどせずに、 -i オプションを使いましょう。

複数ファイルをまとめてドン!

このフォルダしたの.txt全部書き換えたいんだけど…

という場合はfind と xargs を使えば簡単。
(バックアップトルコト!モウイチドイウ、バックアップトルコト!!)

find ./ -name "*.txt" | xargs -I{} sed -i -e "s/true/false/g" {}

以上