Есть ли в Ansible эквивалент команды grep and cut без использования командного модуля? - PullRequest
0 голосов
/ 05 февраля 2020

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

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

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

1 Ответ

2 голосов
/ 05 февраля 2020

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

  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
...