我的目标:在Java文件中使用grep时,忽略所有注释
说我有Java文件“ test.java”
/*
* multiple
* line
* comment
* range
*/
line 1;
line 2; // cmt line 2 日本語 abcd
line 3; // cmt line 3
// cmt line 4
我的输出文件应该是这样的:
line 1;
line 2;
line 3;
我必须处理多行正则表达式,所以我不能使用普通的grep。
实际上,我尝试了2种方法:
REGEX_IS_COMMENT ='(logger\\..*$)|([/][/].*$)|((\\/\\*)(.|[\r\n])+?(\\*\\/))'
pcre2grep -MnvH "$REGEX_IS_COMMENT" $input> $output
=>错误:-v过滤与正则表达式不匹配的“行”,因此所有“第2行”和“第3行”都不会出现在输出文件中
REGEX_IS_COMMENT ='(logger\\..*$)|([/][/].*$)|((\\/\\*)(.|[\r\n])+?(\\*\\/))'
awk 'BEGIN{RS=SUBSEP;} {print gensub(REGEX_IS_COMMENT,"", "g", $0)}' REGEX_IS_COMMENT=$REGEX_IS_COMMENT $input> $output
=>错误:点(。)与日语字符不匹配。我的输出文件是:
line 1;
line 2; 日本語 abcd
line 3;
请分享您的一些解决方案。谢谢!