regex - Ansible:lineinfile 不断压缩我现有的行而不是向其附加文本

标签 regex linux ansible

我看过一些有类似问题的帖子,但似乎对我没有任何帮助。有些人提到需要在我的正则表达式中使用组,所以我添加了它们但仍然有问题。其他人说只要在我的 lineinfile 中添加“backrefs: yes”就可以了,到目前为止还没有成功。

现有线路:

PATH=$PATH:$HOME/.local/bin:$HOME/bin

执行后的预期行:

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/somedir

执行后实际行:

:/opt/somedir

我的 Ansible:

     - name: update ~/.bash_profile
       lineinfile:
         backup: yes
         backrefs: yes
         path: ~/.bash_profile
         regexp: '^(PATH=.*)$'
         line: ':/opt/somedir'

我错过了什么?

最佳答案

您需要将反向引用添加到将要插入的行。

例如:

- name: update ~/.bash_profile
  lineinfile:
    backup: yes
    backrefs: yes
    path: ~/.bash_profile
    regexp: '^(PATH=.*)$' # PATH=.* is inside group 1 because of the parentheses
    line: '\1:/opt/somedir' # group 1 can be referenced with \1

关于regex - Ansible:lineinfile 不断压缩我现有的行而不是向其附加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58736819/

相关文章:

c - Break 语句在循环中不起作用 (gcc)

docker - Ansible 与 Boot2Docker 配合使用时出现问题

javascript - url 上的正则表达式无法在没有 GET 参数的情况下拆分哈希值

linux - 如果您知道 Go 中的组名称,请获取 gid

javascript - javascript 中的 reg ex 仅允许特定的电话号码格式 (123) 456-7890

c++ - 在 C++ 应用程序中链接到错误的库版本

ansible - 检查进程是否正在运行

python - 我如何确认 python 包是使用 ansible 安装的

正则表达式仅匹配字母数字、连字符、下划线和句点,没有重复的标点符号

java - 查找符合特定格式的所有子字符串