sed在bash脚本中不起作用

Jam*_*mie 5 bash replace sed

我搜索了几个小时寻找这个问题的答案,看起来很简单......

我有一个bash脚本,我已经简化了以找到阻止它工作的行,我留下:

#!/bin/bash
#
sed -i -e "s/<link>/\n/g" /usb/lenny/rss/tmp/rss.tmp
Run Code Online (Sandbox Code Playgroud)

如果我运行这个脚本,文件rss.tmp没有任何反应 - 但如果我从终端调用这个完全相同的sed命令,它会按预期进行所有替换.

任何人都知道我在这里做错了什么?

nkv*_*nkv -4

将文件提供给您使用“<”的命令,而创建文件则使用“>”,并且 sed 用作文本格式化程序而不是编辑器,据我所知,也许这样的东西应该可以工作

cat < /usb/lenny/rss/tmp/rss.tmp | sed -i -e "s/<link>/\n/g" > /usb/lenny/rss/tmp/rssedit.tmp
Run Code Online (Sandbox Code Playgroud)

cat 获取文件并使用 sed 对其进行编辑,然后输出转到 rssedit.tmp

检查 rssedit.tmp 是否有你想要的

如果确实如此且仅当如此

你的脚本的下一行应该是

mv /usb/lenny/rss/tmp/rssedit.tmp /usb/lenny/rss/tmp/rss.tmp 
Run Code Online (Sandbox Code Playgroud)

它将用原始替换 made 1,并重命名为原始