如何用unix文件中的/*xyx*/替换注释?
我有一个像这样的文件如何用unix文件中的/*xyx*/替换注释?,unix,replace,sed,awk,comments,Unix,Replace,Sed,Awk,Comments,我有一个像这样的文件 record decimal(10) roll_no /*DECIMAL(10) NOT NULL*/; string(25) name /*STRING(25) NOT NULL*/; decimal(3) marks = NULL /*DECIMAL(3) NULL*/; end 我想把它当作 record decimal(10) roll_no; string(25) name; decimal(3) marks =
record
decimal(10) roll_no /*DECIMAL(10) NOT NULL*/;
string(25) name /*STRING(25) NOT NULL*/;
decimal(3) marks = NULL /*DECIMAL(3) NULL*/;
end
我想把它当作
record
decimal(10) roll_no;
string(25) name;
decimal(3) marks = NULL;
end
你们能帮忙吗
我试过使用awk和sed,但最后我不得不做一些手动更改以使其完美。这个
awk
应该可以
awk '{sub(/ \/.*\//,x)}8' file
record
decimal(10) roll_no;
string(25) name;
decimal(3) marks = NULL;
end
它将从/
替换为/
,而不使用任何内容
另一个版本
awk -F" */" '{print $1";"}' file
record;
decimal(10) roll_no;
string(25) name;
decimal(3) marks = NULL;
end;
另一个
awk -F" */" '{$0=$1";"}8' file
如果确定这是一行注释,您可以使用:
sed 's~/\*.*\*/~~'
下面是sed命令,如果没有一行注释,它可以处理:
sed ':a;$!{N;ba};s~/\*[^*/]*\*/~~g' file
解释
将整个文件读入模式”:a;$!{N;ba}
替换/*和之间的任何内容*/s~/\*[^*/]*\*/~~g
sed
任务(imo)。当然,也可以使用awk
或甚至VisualBasic:)不,我的意思是应该使用sed
完成。作为指导原则(来自Sed/Awk O'reilly):使用Sed
在编写指导原则时编辑任务。使用awk时没有问题。不是所有人都知道sed,或者可能更喜欢awk,没问题。我只是想指出这一点,因为我真的从奥莱利那里听到了这句话。通常sed
和awk
之间的边界很模糊,我认为这是典型sed的一个很好的例子task@RohanHodarkar您可以通过单击对您帮助最大的任何答案的复选标记来表示感谢。@EdMorton thank:)我通常会添加g
,即使它不是必需的,就像在本例中一样。在决定这件事之前,我常常忘记它:)。。但将在这里删除,这可能是误导,而不是说“我试过了,但它不起作用”,请告诉我们你尝试了什么,然后准确地描述什么不起作用。这样我们就不会从头开始为你写整件事,你就会知道你犯了什么错误。