On 02. juni 2017 17:55, Anfield wrote:
> How do I do an anywhere match for a string and replace with some text?
>
> The below playbook doesnt work. But just looking for example to search for
> part of green - reen and replace this with jabba.
>
> How do I do that? Thanks
I suggest reading about regexp here
https://docs.python.org/2/library/re.html
and then
https://docs.ansible.com/ansible/lineinfile_module.html
> List
>
>
> red
> blahstuffcans
> buns
> buns
> grey
> green
> brown
> red
> grey
> grey
>
>
>
> Playbook -
>
> ---
> - hosts: local
> tasks:
> - name: Line In File
> lineinfile:
> dest: /home/ansible/test.txt
> regexp: '%reen%'
> line: '%jabba%'
> register: foundstuff
> - debug: var=foundstuff
% is not a valid regexp special character so you literally searching for
a line containing %reen% and replace that line with %jabba%.
But since %reen% is not in file it will add %jabba% to the bottom.
To make it work you need to do this
- name: Line In File
lineinfile:
dest: /home/ansible/test.txt
backrefs: yes
regexp: '(.*)reen(.*)'
line: '\1jabba\2'
--
Kai Stian Olstad