lineinfile anywhere match

25 views
Skip to first unread message

Anfield

unread,
Jun 2, 2017, 11:55:04 AM6/2/17
to Ansible Project
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

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

Kai Stian Olstad

unread,
Jun 2, 2017, 12:52:18 PM6/2/17
to ansible...@googlegroups.com
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

Anfield

unread,
Jun 2, 2017, 12:54:59 PM6/2/17
to Ansible Project, ansible-pr...@olstad.com
Ive read both. Its still not clear to me how to do an anywhere match on a string


Anfield

unread,
Jun 2, 2017, 1:00:13 PM6/2/17
to Ansible Project, ansible-pr...@olstad.com


Found the answer, from the below list, purple replaced brown with the playbook further below


crimson
blahstuffcans
buns
buns
grey
purple
orange
grey
grey
%jabba%
jabba1
 

Below replaced brown with purple for example

---
- hosts: local
  tasks:
    - name: Line In File
      lineinfile:
        dest: /home/ansible/test.txt
        regexp: 'row'
        insertbefore: BOF
        line: 'purple'
        state: present

Kai Stian Olstad

unread,
Jun 2, 2017, 1:07:21 PM6/2/17
to ansible...@googlegroups.com
On 02. juni 2017 18:54, Anfield wrote:
> Ive read both. Its still not clear to me how to do an anywhere match on a
> string

OK, but did you read my entire answer?
The answer to your question is in it.


--
Kai Stian Olstad

Anfield

unread,
Jun 2, 2017, 1:13:14 PM6/2/17
to Ansible Project, ansible-pr...@olstad.com
Ah I didnt see the bit at the bottom. Thanks


Reply all
Reply to author
Forward
0 new messages