0

我正在使用下面的 shell 命令,结果是一个字符串数组

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

有没有办法在不使用命令模块的情况下在 Ansible 中执行此操作

4

1 回答 1

2

是的。这是。例如

  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
于 2020-02-05T10:49:08.430 回答