尝试从代码中删除注释行,但没有成功

尝试从代码中删除注释行,但没有成功

尝试使用 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'

此命令正在执行以下操作:

  1. sed -n '/^\/\*.*\*\//!p'/* one line comment */:从测试文件中删除所有一行注释

  2. sed -n '/ \/\/.*/!p':删除所有一行注释,如// some one line comment,但保留http://链接。这可以通过此部分中的空白来实现/ \/\/。我认为,您可以在/\s\/\/

  3. sed 's|/\*|\n&|g;s|*/|&\n|g' | sed '/\/\*/,/*\//d':删除示例中的所有多条注释行,但保留代码。

相关内容