我有如下文本文件
JVM_SUPPORT_RECOMMENDED_ARGS="-XX:+UseG1GC -XX:+DisableExplicitGC -Dfile.encoding=utf-8 -Dsun.jnu.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/jira/"我需要将-Djira.startup.warnings.disable=true参数添加到行尾和que双引号("")之间,这样看起来就像
JVM_SUPPORT_RECOMMENDED_ARGS="-XX:+UseG1GC -XX:+DisableExplicitGC -Dfile.encoding=utf-8 -Dsun.jnu.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/jira/ -Djira.startup.warnings.disable=true"我试着用
- name: append TTLAfterFinished to existing list of feature-gates
lineinfile:
path: "setenv.sh"
backrefs: yes
regexp: "^(.*JVM_SUPPORT_RECOMMENDED_ARGS=.*)$"
line: '\1 -Djira.startup.warnings.disable=true"'它将参数追加到行尾,但保留原始的"
JVM_SUPPORT_RECOMMENDED_ARGS="-XX:+UseG1GC -XX:+DisableExplicitGC -Dfile.encoding=utf-8 -Dsun.jnu.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/jira/" -Djira.startup.warnings.disable=true"我该如何使这个替代品正常工作?
此外,在剧本的末尾,我需要清除文件中的这个参数。
发布于 2021-07-07 18:40:41
一种简单的方法是只将变量中的Java机器参数与正则表达式匹配,如下所示:
^.*JVM_SUPPORT_RECOMMENDED_ARGS="(.*)".*$然后在line参数中重写变量名,因此您的任务如下所示:
- lineinfile:
path: "setenv.sh"
backrefs: yes
regexp: '^.*JVM_SUPPORT_RECOMMENDED_ARGS="(.*)".*$'
line: 'JVM_SUPPORT_RECOMMENDED_ARGS="\1 -Djira.startup.warnings.disable=true"'也有一个复杂的方法,有三个组来匹配不同的部分:
行的开头,变量名:^(.*JVM_SUPPORT_RECOMMENDED_ARGS=")
(.*)
(".*)$的末尾
在这个场景中,您的任务如下所示:
- lineinfile:
path: "setenv.sh"
backrefs: yes
regexp: '^(.*JVM_SUPPORT_RECOMMENDED_ARGS=")(.*)(".*)$'
line: '\1\2 -Djira.startup.warnings.disable=true\3'然后删除它,只要确定它是结束引号之前的最后一个参数,您就可以做一些简单的事情,比如让regex匹配它,而不是在组中,所以当您使用反向引用时,它将被移除:
- lineinfile:
path: "setenv.sh"
backrefs: yes
regexp: '^.*JVM_SUPPORT_RECOMMENDED_ARGS="(.*) -Djira.startup.warnings.disable=true".*$'
line: 'JVM_SUPPORT_RECOMMENDED_ARGS="\1"'https://stackoverflow.com/questions/68290408
复制相似问题