我搜索了几个小时寻找这个问题的答案,看起来很简单......
我有一个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,并重命名为原始