我有点困惑为什么这不起作用。我正在尝试做一些更复杂的事情,但我的问题的核心归结为匹配单行 C 注释。
示例myfile:
/* a comment */
跑步:
sed 's|/\*\([.]*\)\*/|\1|' ./myfile
不匹配/替换。
这是为什么?我把它分成几部分,它似乎适用于单独的部分(开头/*、东西、结尾*/和组合(开头/中间和中间/结尾),并且一切正常,但把它放在一起却不行。  
我错过了什么?
[.]*正在寻找一串零个或多个点。你想.成为一个元字符;删除它周围的方括号。
sed 's|/\*\(.*\)\*/|\1|' ./myfile
注意这是一个贪心匹配算法;这就是所有普通(POSIX)版本的sed支持。代表着:
XX /* comment1 */ YY /* comment2 */ ZZ
将输出:
XX  comment1 */ YY /* comment2  ZZ
用经典修复它sed几乎是不可能的,不值得尝试。如果您的 中支持 PCRE(与 Perl 兼容的正则表达式)sed,则可以使用非贪婪匹配运算符将其视为两个注释。