我知道你可以用它来删除空行
sed /^$/d
这将删除以#
开头的评论sed /^#/d
但如何删除以//?
开头的所有评论答案 0 :(得分:2)
你只需要用反斜杠“逃避”斜杠。
/\/\//
^运算符将它绑定到行的前面,因此您的示例将仅影响从第一列开始的注释。您也可以尝试在其中添加空格和制表符,然后使用交替运算符|在两个评论标识符之间进行选择。
/^[ \t]*(\/\/|$)/
修改强> 如果您只是想从文件中删除注释,那么您可以执行以下操作:
/(\/\/|$).*/
我不知道最后的'd'运算符是什么,但上面的表达式应该匹配你模数必须转义括号或交替运算符('|'字符)
编辑2: 我刚刚意识到使用Mac你可能正在“炮轰”该命令并使用系统sed。在这种情况下,您可以尝试在搜索模式周围加上引号,这样shell就不会对您的所有魔术角色做任何疯狂的事情。 :)在这种情况下,'d'表示“删除模式空间”,所以只需在我给出的最后一个例子之后加上'd',你应该设置。
编辑3: 哦,我刚才意识到,你要小心,如果你没有抓住引号内的内容(即你不想从#删除它到行尾,如果它在一个字符串中!)。不幸的是,在这种情况下,regexp变得相当复杂,除非你只是放弃检查带有字符串的行以进行注释。 ...但是你需要使用替换操作来进行sed而不是搜索和删除匹配。 ......而且你需要进行更多的逃避,它会变得疯狂。我建议搜索一个在线sed帮助器(那里有很好的正则表达式测试器,也许有一个用于sed?)。
很抱歉在这一点上放弃了这个项目。这个“问题”是sed可以做到的问题,但它在每个阶段都变得非常复杂,而不是只是煽动一些Python来做它。