簡體   English   中英

ansible-替換現有行中的字符串或單詞,而不替換所有行

[英]ansible - replace a string or word in existing line without replace all the line

我只想替換passwd中jenkins用戶的主目錄,我想lineinfile對此不好,因為它將替換所有行,並且我需要保留用戶ID和組ID,例如:

當前行: jenkins:x:1002:1002::/home/jenkins:/bin/bash

更改為: jenkins:x:1002:1002::/var/lib/jenkins:/bin/bash

/ home / jenkins-> / var / lib / jenkins

- name: Set the Jenkins home directory in passwd
  lineinfile:
    dest: /etc/passwd
    regexp: '^jenkins=.*'
    line: '?'
  register: jenkins_passwd
  notify: restart jenkins

比賽

^(jenkins:.:\d+:\d+::)[^:]*

替換為

\1/var/lib/jenkins

這與/etc/passwd正確格式化的行的起始行與其原始目錄匹配。 我們希望保留的信息被分組在一個捕獲組中,該捕獲組在當前主目錄定義之前停止。 要進行替換,我們引用該組,然后添加新的主目錄定義。 該行的末尾保持不變。

比賽

::。*詹金斯

用。。。來代替

:: / var / lib / jenkins

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM