sed コマンドを使用してファイルに永続的な変更を加えるにはどうすればよいですか?

sed コマンドを使用してファイルに永続的な変更を加えるにはどうすればよいですか?

これは可能ですか? どこかで次のコマンドで実行できると読みました:

sed -e [コマンド] [ファイル]

しかし、それはちょうど同じことをしているように見えました

sed [コマンド] [ファイル]

(変更は保存されませんでした)。sed を使用してこれを行う方法はありますか?

答え1

あなたが探しているのは以下だと思います-i:

   -i[SUFFIX], --in-place[=SUFFIX]

          edit files in place (makes backup if SUFFIX supplied)

例えば:

$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld

サフィックスを指定すると、バックアップ ファイルが作成されます。

$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt 
$ ls
foo.txt  foo.txt.bak

入力ファイルが変更され、元のファイルデータを含むバックアップが作成されます。

また、これはGNU用でありsedわずかな違い異なる実装間の形式の違いsed

答え2

これらのソリューションは HPUX (UNIX) で機能します:

1. { rm test1.sh && awk '{gsub("Error", "NO_Error", $0); print}' > test1.sh; } < test1.sh:

2. perl -pi -e 's/Error/NO_Error/g' test1.sh

3. sed 's/Error/NO_Error/g' test1.sh | tee test1.sh

答え3

-eオプションは複数のsedコマンドを実行するためのものです

sed -e 's/linux/unix/' -e 's/os/OS/' file.txt

考慮するfile.txt

linux os

O/Pは

unix os

-iオプションは変更を永続的に保存します...

関連情報