sed -i s/oldstr/newstr/g
我想用目录中的新字符串替换所有旧字符串。当我执行此命令时,它会在控制台上显示所有字符串都更改为新字符串。但是当我进入文件并检查时,旧字符串仍然保持不变。请帮助解决问题
答案 0 :(得分:0)
#> sed -i \.orig 's/old/new/g' file
这应该与:
相同#> mv file file.orig
#> sed 's/old/new/g' file.orig > file.
答案 1 :(得分:0)
如果你在macos中,你可以尝试:
sed -i '' 's/oldstr/newstr/g' your-file
来自男人:
就地编辑文件,使用指定的扩展名保存备份。如果给出了零长度扩展,则不会保存备份。
因此,使用-i ''
时,它不会创建备份并对文件应用更改。
保留备份可以使用:
sed -i.bak 's/oldstr/newstr/g' your-file
要替换多个文件中的oldstr
,您可以使用此功能:
perl -pi -e 's/oldstr/newstr/g' *
保留备份:
perl -i.bak -p -e 's/oldstr/newstr/g' *