[英]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.