如何用sed替换1个文件中的所有实例?

yar*_*rek 2 linux shell sed

我需要替换所有出现的内容并写回同一个文件

我试过了:

sed 's/one/two/g' file.txt
Run Code Online (Sandbox Code Playgroud)

这打印出来但不写入文件

我也试过了

sed 's/one/two/g' file.txt>file.txt
Run Code Online (Sandbox Code Playgroud)

这导致空文件

sed -i 's/one/two/g' file.txt
Run Code Online (Sandbox Code Playgroud)

给出错误: sed: 1: "file.txt": invalid command code f

任何的想法?

Ami*_*mit 6

对于Mac:-i.bak用于添加备份文件

sed -i.bak 's/one/two/g' file.txt
Run Code Online (Sandbox Code Playgroud)

要么

sed -i '' 's/one/two/g' file.txt
Run Code Online (Sandbox Code Playgroud)

对于Linux:使用sed -ion来进行infile替换

sed -i 's/one/two/g' file.txt
Run Code Online (Sandbox Code Playgroud)

您还可以使用tmp文件执行以下操作:

sed 's/one/two/g' file.txt > tmp.txt && mv tmp.txt file.txt
Run Code Online (Sandbox Code Playgroud)