Linuxでファイル内の文字を置換して保存する方法

Linuxでファイル内の文字を置換して保存する方法

Linuxでファイル内の文字列を置換して上書き保存する方法はいくつかありますが、一般的にはsedコマンドを使用します。
以下に具体的な手順を示します。

基本的な使い方

1. sedコマンドを使用する

例えば、ファイルexample.txt内の文字列"foo"を"bar"に置換する場合、以下のようにします:

sed 's/foo/bar/g' example.txt

このコマンドは置換結果を標準出力に表示します。
これで保存ができているわけではないので注意してください。
ファイル自体を変更する場合は、-iオプションを使用します。

sed -i 's/foo/bar/g' example.txt
2. perlコマンドを使用する

perlコマンドを使用しても同様の置換が可能です。
もちろんperlがインストールされていることが前提ですが。
以下のように置換処理ができます。

perl -pi -e 's/foo/bar/g' example.txt

少々オプションが多いのでコマンドを忘れてしまいそうですね。

3. awkコマンドを使用する

テキスト処理やデータ操作を行うawkでも置換はできますが、基本的にはsedやperlの方が簡単です。
それでも、以下のようにして置換可能です。
やはり少々冗長ですね。

awk '{gsub(/foo/, "bar"); print}' example.txt > temp && mv temp example.txt

具体的な例

以下に、各方法の具体例を示します。

sedでの置換例

1. ファイルexample.txtの内容を確認します

cat example.txt
# 出力例:
# This is a foo example.
# Another line with foo.

2. sedを使用して文字列を置換します

sed -i 's/foo/bar/g' example.txt

3. 再度ファイルの内容を確認します

cat example.txt
# 出力例:
# This is a bar example.
# Another line with bar.
perlでの置換例

1. perlを使用して置換します

perl -pi -e 's/foo/bar/g' example.txt

2. ファイルの内容を確認します

cat example.txt
# 出力例:
# This is a bar example.
# Another line with bar.
awkでの置換例

1. awkを使用して置換します

awk '{gsub(/foo/, "bar"); print}' example.txt > temp && mv temp example.txt

2. ファイルの内容を確認します:

cat example.txt
# 出力例:
# This is a bar example.
# Another line with bar.

まとめ

sedを使用する方法が最も一般的で簡単です。
次にperlって感じですね。
わざわざファイルを開いて置換するのが面倒な場合は試してみてください。