首先,使用“ place module”检测您要查找的行是否在这里,然后用其他内容更改它。(比如同一行 + 结尾的东西)。
如果“替换”是真的,这意味着你的行在这里,然后用特殊性替换新行,用新行查找。
否则你要找的线路不在这里。
例如:
# Vars
- name: Set parameters
set_fact:
newline : "hello, i love ansible"
lineSearched : "hello"
lineModified : "hello you"
# Tasks
- name: Try to replace the line
replace:
dest : /dir/file
replace : '\{\{ lineModified }} '
regexp : '\{\{ lineSearched }}$'
backup : yes
register : checkIfLineIsHere
- name: Line is here, change it
lineinfile:
state : present
dest : /dir/file
line : '\{\{ newline }}'
regexp : '\{\{ lineModified }}$'
when: checkIfLineIsHere.changed
如果文件包含“ hello”,它将变成“ hello you”,然后在结尾处变成“ hello,i love anable”。
如果文件内容不包含“ hello”,则不修改该文件。
有了同样的想法,你可以做一些事情,如果 line Search 在这里:
# Vars
- name: Set parameters
set_fact:
newline : "hello, i love ansible"
lineSearched : "hello"
lineModified : "hello you"
# Tasks
- name: Try to replace the line
replace:
dest : /dir/file
replace : '\{\{ lineModified }} '
regexp : '\{\{ lineSearched }}$'
backup : yes
register : checkIfLineIsHere
# If the line is here, I want to add something.
- name: If line is here, do something
lineinfile:
state : present
dest : /dir/file
line : '\{\{ newline }}'
regexp : ''
insertafter: EOF
when: checkIfLineIsHere.changed
# But I still want this line in the file, Then restore it
- name: Restore the searched line.
lineinfile:
state : present
dest : /dir/file
line : '\{\{ lineSearched }}'
regexp : '\{\{ lineModified }}$'
when: checkIfLineIsHere.changed
如果文件包含“ hello”,那么行的末尾仍然会包含“ hello”和“ hello,i love anable”。