Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用unix文件中的/*xyx*/替换注释?_Unix_Replace_Sed_Awk_Comments - Fatal编程技术网

如何用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
,即使它不是必需的,就像在本例中一样。在决定这件事之前,我常常忘记它:)。。但将在这里删除,这可能是误导,而不是说“我试过了,但它不起作用”,请告诉我们你尝试了什么,然后准确地描述什么不起作用。这样我们就不会从头开始为你写整件事,你就会知道你犯了什么错误。