如何在groovy脚本中打开文件并编辑其内容

xt0899hw  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(220)

我在Jenkins作业的工作区中有一个Makefile,我想在运行使用此Makefile的脚本的下一部分之前,编辑掉其中的某些部分,然后保存它。
我想删掉的部分是-

PUMP_MARKER:=,cpp
ifneq (,$(findstring $(PUMP_MARKER), $(DISTCC_HOSTS)))
PUMP:=pump
else
PUMP:=
endif

我正在寻找一些外壳命令,我可以把我的groovy脚本,这将打开这个文件,并删除上述部分,保存它,然后继续前进。
我不擅长shell,所以我不可能自己解决这个问题。
下面是我的groovy脚本的外观-

stage('Build'){
  dir ("$WORKSPACE/$SVN_TAG") {
    Here- I want to insert some shell command to edit that file out
  }
}

请提出一些想法来实现这一点。

**注1-**我知道我可以只使用vi文件并手动执行此操作,但我希望为多个作业执行此操作,我真正希望能够在我的每个Groovy脚本中粘贴并自动执行此操作。
**注2-**它不一定是shell,可以是任何语言,只要我可以在groovy脚本中运行它,它就可以完成工作。

33qvvth1

33qvvth11#

我可以用这个补丁工具解决这个问题-

patch foo.txt <<'END'
1,6d0
< PUMP_MARKER:=,cpp
< ifneq (,$(findstring $(PUMP_MARKER), $(DISTCC_HOSTS)))
< PUMP:=pump
< else
< PUMP:=
< endif
END

脚本在要修改的文件上调用patch(在本例中为foo.txt)。patch工具随后也会在标准输入上获取它要应用的diff。这是在下面的代码中使用shell中的“here document”机制实现的,参见〈〈后跟带引号的标识符END。带引号的END是必要的,以确保后续的diff文本不会受到扩展。

相关问题