回答:
あなたが探していると思う-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
実装が。
sed
インプレース編集は行いません。新しいファイルが作成され、古いファイルが上書きされ、iノードが変更されます。
{ rm file; cmd > file; } < file
、cmdは同じファイルを読み書きするという結論に至りますが、そうではありません。偶然同じ名前を持つ2つのdistinceファイルです。しかし、ここで議論を始めたくありません。
sed: 1: "foo.txt": invalid command code f
、実行時に取得しますsed -i 's/o/X/g' foo.txt
。ただし、拡張機能を提供することはsed -i .bak 's/o/X/g' foo.txt
うまく機能します。バックアップファイルを作成せずに機能させる方法はありますか?
sed -i '' 's/o/X/g' foo.txt
これらのソリューションは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
-e
オプションは複数のsed
コマンドを実行するためのものです
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
検討しfile.txt
て
linux os
O / Pは
unix os
-i
オプションは変更を永久に保存します...
-e
フラグは、発現のための略です。あなたはおそらくしたい-i
どの手段旗をin-place
、私は強くあなたが使用することをお勧めしますsed -i.bak 's/../' filename