如何用/ * xyx * /替换unix文件中的注释?

时间:2014-02-20 17:08:40

标签: 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 = NULL;
end

你们可以帮忙吗?

我尝试使用awk和sed但我最后会做一些手动更改以使其完美。

3 个答案:

答案 0 :(得分:2)

如果确定这只是一行注释,您可以使用:

sed 's~/\*.*\*/~~'

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这是sed命令,如果没有单行注释,它可以处理:

sed ':a;$!{N;ba};s~/\*[^*/]*\*/~~g' file

解释

  • ':a;$!{N;ba}将整个文件读入模式
  • s~/\*[^*/]*\*/~~g替换/ *和* /
  • 之间的所有内容