我正在尝试用sed -e command
替换shell脚本中的单词,但它没有替换,请帮忙,我已经尝试过以下
我们在/data/docs/config.log
中有单独的文件,在该文件中有一个单词?帐户,例如,
用户名acc,密码acc,?account.name
这个帐户词需要使用sed -e命令替换为'GLOBAL',
reacc = GLOBAL
sed -e "s/?account/$reacc/g" /data/docs/config.log > /data/docs/newconfig.log
但是这里的文件newconfig.log创建了0大小,没有输出写入文件,它没有替换它的空文件,
输出应为username acc, passsword acc, GLOBAL.name in newconfig.log
答案 0 :(得分:1)
作为唯一能够重现问题的人,你几乎可以独立完成。但是,你可以做很多事情来分析问题。
#!/bin/sh
。例如,在cygwin中,/bin/sh
是bash的别名。验证:echo $SHELL
cat /data/docs/config.log > /data/docs/newconfig.log
有用吗?再次在另一个文件夹中测试。sed
真的完蛋了吗?测试没有输出重定向;查看输出是否转储到stdout。sed
本身。谁知道,也许你有一个隐藏真实sed
的怪异别名。最简单的过滤器是sed -e ''
,它应该简单地回显您键入的每一行(就像没有参数的cat
一样)。那样有用吗?然后尝试一些简单的模式。在成功的测试用例和失败的测试用例之间进行系统迭代,直到找到断点。这样做,你应该能够找到原因。对不起,这就是我现在可以为你做的一切。
答案 1 :(得分:0)
删除=
周围的空格。制作后尝试
reacc=GLOBAL