尝试使用 sed 从代码中删除所有注释行:
1)/* ... */
和/* \n \n \n */
尝试使用这个结构来隐藏显示里面的内容
sed -n '/^\/\*/,/\*\//!p'
但它似乎隐藏了不同行之间的内容,并省略了内联/* .... */
我的意思是它在这里起作用:
/********
This readme is intented ...
......
....
....
************/
但它在这里不能内联工作:
/* Just a small bug */
它获取第一个找到的内容并在下一行/*
继续进一步搜索:*/
/* Just a small bug */
code
code
code
/*****
To sum up this shows us...
...
...
...
...
******/
因此,“/* 只是一个小错误 */”下的所有代码都被隐藏了 :( 我非常想念这一点:
code
code
code
2) // 内联:在之前排除 http:// 和 https://,在之后包括 if
我还尝试删除包含以下内容的字符串和字符串的部分//
:
sed 's/\/\/.*//'
//
仅当位于行首时,此实现才会成功:
sed 's/^\/\/.*//'
但最终它会删除内联链接,http://
例如https://
code
code https://www.sample.com/abc // include this URL
code https://www.sample.com/abc // exclude this URL but leave alow https://anothersample.com/xyz
code
尝试搜索 sed 模式,搜索http://
和https://
,忽略它们,然后内联搜索//
并删除其后的所有内容(如果 http/https 位于之后,则忽略它们//
),但没有运气:(
也许有人有一个好主意,那就太棒了,无论如何都要谢谢你!
答案1
我创建了这个小文本文件
/* one line comment */
some
multiple
code
here
/*****
multiple
line
comment
*****/
some code http://somelink
some code // some one line comment
对于这个小测试文件,此命令用于删除您提到的所有注释
cat comments.txt | sed -n '/^\/\*.*\*\//!p' | sed -n '/ \/\/.*/!p' | sed 's|/\*|\n&|g;s|*/|&\n|g' | sed '/\/\*/,/*\//d'
此命令正在执行以下操作:
sed -n '/^\/\*.*\*\//!p'
/* one line comment */
:从测试文件中删除所有一行注释sed -n '/ \/\/.*/!p'
:删除所有一行注释,如// some one line comment
,但保留http://
链接。这可以通过此部分中的空白来实现/ \/\/
。我认为,您可以在/\s\/\/
sed 's|/\*|\n&|g;s|*/|&\n|g' | sed '/\/\*/,/*\//d'
:删除示例中的所有多条注释行,但保留代码。