sed 搜索并替换创建新文件
sed search and replace creating new file
我正在尝试搜索和替换文件中的一些文本。我可以创建一个新文件,也可以覆盖现有文件。
如果我用
sed -i 's/<texttoreplace>/<newtext>/g' foo.txt
我得到了两个文件:
foo.txt为修改后的文件
foo.txte是原文
如果我用
sed -i 's/<texttoreplace>/<newtext>/g' foo.txt > bar.txt
我得到了 2 个文件:
foo.txt为原始未修改文件
bar.txt 是 0 个字节。
我做错了什么?我真的更喜欢就地覆盖原始文件,这当然看起来应该是可能的。
要使您的第二个示例正常工作,您明确要在其中创建第二个文件,只需删除 -i
标志。
sed 's/<texttoreplace>/<newtext>/g' foo.txt > bar.txt
你的第一个例子有点让人头疼。 -i
标志执行就地编辑,带有原始内容的可选备份文件。它对我来说很好用,无需创建“.txte”文件。您可以通过使用以下语法明确告诉它没有扩展名来让它工作:
sed -i'' 's/<texttoreplace>/<newtext>/g' foo.txt
你不应该这样做,但也许你的环境与我的不同。
只需复制并执行 sed
# docker can not replace mount file
cp /etc/nginx/conf.d/nginx.template /etc/nginx/conf.d/nginx.conf
sed -i "s/findText/${replaceText}/g" /etc/nginx/conf.d/dboard_nginx.conf
我在我的 mac 上使用 sed -ie
,这与从原始文件创建备份文件并在文件扩展名末尾添加 e
做同样的事情。使用gsed -i
并没有抱怨它并在没有创建备份文件的情况下更改了文件。
使用 brew 安装 gnu sed:
brew install gnu-sed
我正在尝试搜索和替换文件中的一些文本。我可以创建一个新文件,也可以覆盖现有文件。
如果我用
sed -i 's/<texttoreplace>/<newtext>/g' foo.txt
我得到了两个文件:
foo.txt为修改后的文件 foo.txte是原文如果我用
sed -i 's/<texttoreplace>/<newtext>/g' foo.txt > bar.txt
我得到了 2 个文件:
foo.txt为原始未修改文件 bar.txt 是 0 个字节。我做错了什么?我真的更喜欢就地覆盖原始文件,这当然看起来应该是可能的。
要使您的第二个示例正常工作,您明确要在其中创建第二个文件,只需删除 -i
标志。
sed 's/<texttoreplace>/<newtext>/g' foo.txt > bar.txt
你的第一个例子有点让人头疼。 -i
标志执行就地编辑,带有原始内容的可选备份文件。它对我来说很好用,无需创建“.txte”文件。您可以通过使用以下语法明确告诉它没有扩展名来让它工作:
sed -i'' 's/<texttoreplace>/<newtext>/g' foo.txt
你不应该这样做,但也许你的环境与我的不同。
只需复制并执行 sed
# docker can not replace mount file
cp /etc/nginx/conf.d/nginx.template /etc/nginx/conf.d/nginx.conf
sed -i "s/findText/${replaceText}/g" /etc/nginx/conf.d/dboard_nginx.conf
我在我的 mac 上使用 sed -ie
,这与从原始文件创建备份文件并在文件扩展名末尾添加 e
做同样的事情。使用gsed -i
并没有抱怨它并在没有创建备份文件的情况下更改了文件。
使用 brew 安装 gnu sed:
brew install gnu-sed