Есть ли в Ansible эквивалент команды grep и cut без использования командного модуля?

Я использую команду оболочки ниже, и результатом является массив строк '

MQSFILEPARSED=$(cat $FILE | grep ' Name=' | cut -d '=' -f2);

Есть ли способ выполнить эту операцию в Ansible без использования командного модуля

1 ответ

Да. Это. Например

  vars:
    FILE: test.txt
  tasks:
    - set_fact:
        MQSFILEPARSED: "{{ lookup('file', FILE).splitlines()|
                           select('match', '^(.*) Name=(.*)$')|
                           map('regex_replace', my_regex, my_replace)|
                           list }}"
      vars:
        my_regex: '^(.*)=(.*)$'
        my_replace: '\2'
    - debug:
        var: MQSFILEPARSED

дает

    "MQSFILEPARSED": [
        "Value", 
        "Value2"
    ]


Тестовый файл

$ cat test.txt
line1
line2
 Name=Value
line4
line5 Name=Value2

Тестовый сценарий

$ cat test.sh
#!/bin/sh
FILE=test.txt
MQSFILEPARSED=$(cat $FILE | grep ' Name=' | cut -d '=' -f2)
printf "$MQSFILEPARSED \n"

дает

Value
Value2
Другие вопросы по тегам