Regex SED:为什么replace不能使用$来表示行的结束

Regex SED:为什么replace不能使用$来表示行的结束,regex,sed,Regex,Sed,我想使用sed从c头文件中删除特定的注释“/”。 我不明白为什么在末尾加上美元不起作用。请建议。 请参阅下面的代码 sed -i -e 's,\\(^//\\)\\(#undef TEST_FIRMWARE$\\),\2,' ./XX_HEADER.h 如果我在最后删除了$,该函数会工作,但当我放置$时,它不会工作。我想了解原因。我怀疑捕获组中的元字符的开始和结束。尝试: sed -i -e 's,^\(//\)\(#undef TEST_FIRMWARE\)$,\2,' ./XX_HEADE

我想使用sed从c头文件中删除特定的注释“/”。 我不明白为什么在末尾加上美元不起作用。请建议。 请参阅下面的代码

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

如果我在最后删除了$,该函数会工作,但当我放置$时,它不会工作。我想了解原因。

我怀疑捕获组中的元字符的开始和结束。尝试:

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

我版本的
sed
似乎并不在意,但我确实知道我以前遇到过这种行为,所以这可能是影响您版本的
sed

的原因。我怀疑元字符在捕获组中的开始和结束。尝试:

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

我版本的
sed
似乎并不在意,但我确实知道我以前遇到过这种行为,所以这可能是影响你版本的
sed

尝试检查这些行是否有肉眼看不到的字符,如空格、dos样式的行尾等。。您可以使用
cat-tE
cat-A
检查当Wiktor Stribiżew添加四个前导空格以重新格式化您的
sed
时,编辑还应将每个“\\”更改为“\”;我试着进一步编辑你的文章,但这是一个太小的编辑,所以不能接受;请您进行编辑,以修复
sed
命令,好吗?尝试检查这些行是否有肉眼看不见的字符,如空格、dos样式的行尾等。。您可以使用
cat-tE
cat-A
检查当Wiktor Stribiżew添加四个前导空格以重新格式化您的
sed
时,编辑还应将每个“\\”更改为“\”;我试着进一步编辑你的文章,但这是一个太小的编辑,所以不能接受;请您进行编辑,以修复
sed
命令,好吗?在我的机器上安装了thxsed(GNU-sed)4.2.2。将开始或结束置于捕获组之外没有任何效果。@sugun:在这种情况下,我倾向于同意Sundeep对您的问题的评论:下一步要检查的是尾随的不可见字符(空白或非打印字符)<代码>cat-A
可能有帮助,或者
od-c
;这两者都将使我的机器上的不可见字符/字节可见(GNU sed)4.2.2。将开始或结束置于捕获组之外没有任何效果。@sugun:在这种情况下,我倾向于同意Sundeep对您的问题的评论:下一步要检查的是尾随的不可见字符(空白或非打印字符)<代码>cat-A可能有帮助,或者
od-c
;这两者都将使不可见的字符/字节可见