SED:为什么替换不能与$一起显示行尾

时间:2019-07-05 13:54:03

标签: regex sed

我想使用sed从c头文件中删除特定的注释'//'。 我不明白为什么在$末尾放置$无效。请提出建议。 请参见下面的代码。

sed -i -e 's,\\(^//\\)\\(#undef TEST_FIRMWARE$\\),\2,' ./XX_HEADER.h

如果我最后删除$,则该功能有效,但是当我放置$时,该功能无效。我想了解原因。

1 个答案:

答案 0 :(得分:0)

我对捕获组内部的元字符的开头和结尾感到怀疑。试试:

sed -i -e 's,^\(//\)\(#undef TEST_FIRMWARE\)$,\2,' ./XX_HEADER.h

我的sed版本似乎并不在意,但我确实知道我以前曾遇到过这种行为,因此可能是影响您的sed版本的原因。 / p>