我试图编写一个bash函数来从文本文件中删除垃圾字符串(包括引号和括号),并使用相同的文件名重新保存文件。
当我将其保存为新文件时,我得到了它...
function fixfile()
{
sed 's/(\"garbagestringhere\")//g' /Users/peter/.emacs.d/recent-addresses > /Users/peter/.emacs.d/recent-addresses-fixed;
}
...但是当我使用与以前相同的文件名保存它时,它会擦除文件:
function fixfile()
{
sed 's/(\"garbagestringhere\")//g' /Users/peter/.emacs.d/recent-addresses > /Users/peter/.emacs.d/recent-addresses;
}
我该如何解决这个问题?
答案 0 :(得分:2)
对于GNU sed man sed
将显示-i
选项:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
如果您使用的是OSx(或BSD),则可以使用(see this reference answer)
sed -i '' 's/whatever//g' file
// ^ note the space
答案 1 :(得分:1)