【问题标题】:Replacing the lines between two commented lines using sed commands in a java file使用 java 文件中的 sed 命令替换两个注释行之间的行
【发布时间】:2016-06-16 06:38:30
【问题描述】:

我使用的是 Ubuntu 14.04。我需要使用 sed 命令替换 java(使用 JDK-8)文件中的这部分代码 -

//START_EDIT1
some lines
//END_EDIT1

用这行代码。

//START_EDIT1
System.out.println("Done");
//END_EDIT1

我是新手,找不到正确的命令来在 java 代码中找到这两个 cmets 并使用 sed 命令替换它们之间的代码。我无法更改 java 注释格式。有没有办法使用 sed 命令找到它?或者简单地说,查找双正斜杠注释的 sed 命令是什么?

【问题讨论】:

  • 所以,开始和结束标记之间的所有文本都将被删除并替换为System.out.println("Done"); ?
  • 是否要求更换代码?这很奇怪....
  • 先生,抱歉语言不好。我只是问如何使用 sed 命令找到这些 cmets 之间的线。 @TomN

标签: bash sed


【解决方案1】:

你为什么不能用 vi 和 ESC :%s/START_EDIT1/System.out.println\(\"Done\"\)\;/g 再次为:%s/END_EDIT1//g

您也可以使用 sed 实现同样的效果。但这与Java无关。

【讨论】:

  • 先生,对不起。我实际上是在尝试使用 sed 命令来实现这一点。我使用不同的 sed 命令失败了,并且不确定它与 java 文件的关系。这就是我标记java的原因。我更正了帖子中的标签。 @Raghu K Nair
【解决方案2】:

使用 GNU sed:

sed '/\/\/START_EDIT1/,/\/\/END_EDIT1/c\//START_EDIT1\nSystem.out.println("Done");\n//END_EDIT1' file

如果您想“就地”编辑文件,请使用 sed 的选项 -i

【讨论】:

  • 您也可以使用不同的分隔符以获得更好的可读性。sed '\@//START_EDIT1@,\@//END_EDIT1@ c\//START_EDIT1\nSystem.out.println("Done");\n//END_EDIT1' file
  • 感谢赛勒斯和@ritesht93 :D .
猜你喜欢
  • 2022-10-24
  • 2013-09-25
  • 1970-01-01
  • 2018-09-16
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
相关资源
最近更新 更多