sed -i s/oldstr/newstr/g
我想用目录中的新字符串替换所有旧字符串。当我执行这个命令时,它显示所有的字符串在控制台上被更改为新的字符串。但是当我输入文件并检查时,旧字符串仍然保持不变。请帮忙弄清楚这个问题虽然使用sed替换字符串,但更改不适用于文件
sed -i s/oldstr/newstr/g
我想用目录中的新字符串替换所有旧字符串。当我执行这个命令时,它显示所有的字符串在控制台上被更改为新的字符串。但是当我输入文件并检查时,旧字符串仍然保持不变。请帮忙弄清楚这个问题虽然使用sed替换字符串,但更改不适用于文件
如果你是在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' *
欢迎来到堆栈溢出,你传递给了这个'sed'命令的是什么?请输入您的输入文件或'* *号码。 – RavinderSingh13
根据您的sed版本,您可能需要使用'-i'选项 - 请参阅https://stackoverflow.com/questions/5694228/sed-in-place-flag-that-works-both-on-mac- bsd-and-linux ....另外,作为一种很好的做法,在命令'sed -i.bkp's/oldstr/newstr/g''上使用单引号' – Sundeep
你试过'cat file | sed -i's/oldstr/newstr/g''?使用该文件作为参数'sed -i's/oldstr/newstr/g'文件' –