首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串追加到引号之间的行尾

将字符串追加到引号之间的行尾
EN

Stack Overflow用户
提问于 2021-07-07 17:12:11
回答 1查看 530关注 0票数 1

我有如下文本文件

代码语言:javascript
复制
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双引号("")之间,这样看起来就像

代码语言:javascript
复制
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"

我试着用

代码语言:javascript
复制
- 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"'

它将参数追加到行尾,但保留原始的"

代码语言:javascript
复制
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"

我该如何使这个替代品正常工作?

此外,在剧本的末尾,我需要清除文件中的这个参数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-07 18:40:41

一种简单的方法是只将变量中的Java机器参数与正则表达式匹配,如下所示:

代码语言:javascript
复制
^.*JVM_SUPPORT_RECOMMENDED_ARGS="(.*)".*$

然后在line参数中重写变量名,因此您的任务如下所示:

代码语言:javascript
复制
- 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=")

  • everything,在引号、(.*)

  • the结束引号和可能的尾随空格之间,直到行(".*)$

的末尾

在这个场景中,您的任务如下所示:

代码语言:javascript
复制
- lineinfile:
    path: "setenv.sh"
    backrefs: yes
    regexp: '^(.*JVM_SUPPORT_RECOMMENDED_ARGS=")(.*)(".*)$'
    line: '\1\2 -Djira.startup.warnings.disable=true\3'

然后删除它,只要确定它是结束引号之前的最后一个参数,您就可以做一些简单的事情,比如让regex匹配它,而不是在组中,所以当您使用反向引用时,它将被移除:

代码语言:javascript
复制
- lineinfile:
    path: "setenv.sh"
    backrefs: yes
    regexp: '^.*JVM_SUPPORT_RECOMMENDED_ARGS="(.*) -Djira.startup.warnings.disable=true".*$'
    line: 'JVM_SUPPORT_RECOMMENDED_ARGS="\1"'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68290408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档