下面的sed将精确输出输入。我想要做的是在第一个匹配组(\ 1)中替换所有出现的_,而不是在第二个匹配组中。这可能吗?如果只匹配某一行的匹配项,可以sed进行搜索和替换吗?
echo 'abc_foo_bar=one_two_three' | sed 's/\([^=]*\)\(=.*\)/\1\2/'
abc_foo_bar=one_two_three
所以,我希望的输出是:
abc-foo-bar=one_two_three
我宁愿不诉诸awk的,因为我在做其他sed命令串过,但我如果必须的话,我会诉诸于此。
编辑:小修复到RE
是您的RE真的是你想要什么?我期望'\([^ =] *])\(=。* \)'。这就是我的答案,但可以根据需要进行调整。 – 2012-02-10 13:11:09
你说得对,我已经更新了这个问题来反映这一点。谢谢。 – 2012-02-10 13:21:51