我正在使用此功能删除多行注释。
awk '/^--/ {next} /^\/\*/ && /\*\/$/{next} /^\/\*/{c=1;next} /\*\/$/{c=0;next} !c{FS="--|\/\*";a=$1;FS="\\*\\/";a=a$2;$0=a;print}' filename
输入就像这样
aaaaaaa
/*bbbbb*/
ccccccc
/*bbbbb
bbbbbb*/
ddddd
我希望它像
aaaaaaa
ccccccc
dddddd
但即将到来
aaaaaaa
ccccccc
ddddddd
任何人都可以帮助我......
由于
答案 0 :(得分:1)
此awk
可能是要走的路:
awk '/\/\*|\*\// {$0=""}1' file
aaaaaaa
ccccccc
ddddd
它只是用/*
或*/
代替行。
如果bbbbbb
超过一个开始/停止行,请执行以下操作:
cat file
aaaaaaa
/*bbbbb*/
ccccccc
/*bbbbb
bbbbbb
bbbbbb*/
ddddd
并且您要将所有内容从/*
移除到*/
,而不仅仅是使用这些代码:
awk '/^\/\*/ {f=1} {print f?"":$0} /\*\/$/ {f=0}' file
aaaaaaa
ccccccc
ddddd
答案 1 :(得分:0)
您的代码会对注释的格式进行一些假设。我将假设您的假设对于您的代码是正确的,并且只提供缺少的空行:
$ awk '/^--/ {next} /^\/\*/ && /\*\/$/{print ""; next} /^\/\*/{c=1;print "";next} /\*\/$/{c=0;print "";next} !c ' filename
aaaaaaa
ccccccc
ddddd