使用Ansible从Windows命令提示符输出中提取特定列

时间:2019-04-30 12:01:16

标签: windows awk ansible

我想获得第三列和第五列的输出。我在剧本中使用了以下命令。

win_shell: dir | awk '{print $3,$5}'

但是我得到如下输出。

        "awk : The term 'awk' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the ",
        "spelling of the name, or if a path was included, verify that the path is correct and try again.",]

当我通过Windows提示符执行命令时,将获得预期的输出。请帮忙。

1 个答案:

答案 0 :(得分:0)

您可以在Ansible中执行列提取,而不是使用awk。例如,假设您已将win_shell任务的输出注册到名为result的变量中,则可以执行以下操作:

- debug:
    var: item.split()|json_query('[[2], [4]]')
  loop: "{{ output.stdout_lines }}"

这将显示输出的每一行的第3列和第5列(数组的索引为零)。也许您想将其放在列表中,而不只是显示它:

- set_fact:
    data: "{{ data|default([]) + [item.split()|json_query('[[2], [4]]')] }}"
  loop: "{{ output.stdout_lines }}"