正则表达式 – 用C注释替换(单行)C注释
发布时间:2020-12-14 05:50:08 所属栏目:百科 来源:网络整理
导读:我如何使用sed将源文件中的所有C风格注释替换为C风格. 所有这些: int main() { /* some comments */ ... 至: int main() { // some comments ... 所有注释都是单行的,代码之间没有这样的注释: int f(int x /*x-coordinate*/ ); 所以我试过这个: sed -i '
我如何使用sed将源文件中的所有C风格注释替换为C风格.
所有这些: int main() { /* some comments */ ... 至: int main() { // some comments ... 所有注释都是单行的,代码之间没有这样的注释: int f(int x /*x-coordinate*/ ); 所以我试过这个: sed -i 's/ /* .* * / //* /g' src.c 但它保持文件不变. 解决方法sed -i 's:(.*)/[*](.*)[*]/:1 // 2:' FILE 这会像这样改变每一行: aaa /* test */ 成这样的一行: aaa // test 如果您在同一行上有更多注释,则可以应用此更复杂的解析器,该解析器转换如下行: aaa /* c1 */ bbb /* c2 */ ccc 成 aaa bbb ccc // c1 c2 sed -i ':r s:(.*)/[*](.*)[*]/(.*):13 //2:;tr;s://(.*)//(.*)://21:;tr' FILE 更复杂的情况是当你在一行的字符串中有注释时,比如在call(“/ * string * /”)中.这是一个脚本c-comments.sed,来解决这个问题: s:(["][^"]*["]):n1n:g s:/[*]:n&:g s:[*]/:&n:g :r s:["]([^n]*)n([^"]*)":"12":g tr :x s:(.*)n/[*]([^n]*)[*]/n(.*)$:13 // 2: s:(.*)n(.*)//(.*)//(.*):1n2 //43: tx s:n::g 您将此脚本保存到文件c-comments.sed中,并将其称为: sed -i -f c-comments.sed FILE (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |