You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中提取stdout_lines第二列的所有用户名?

提取Ansible输出中第二列的所有用户名

解决方案

在Ansible的Jinja2语法中,批量提取多行指定列需要结合切片、map过滤器和列表转换实现,具体操作如下:

1. 跳过表头,获取数据行

使用stdout_lines[1:]切片语法,跳过第一行表头,直接获取所有数据行(Jinja2中索引从0开始,[1:]表示从第二行到末尾的所有元素)。

2. 拆分每行并提取目标列

通过map('split')将每行字符串按任意空白字符拆分(自动处理连续空格),再用map(attribute='1')提取每个拆分后列表的第二个元素(对应第二列),最后用list将结果转为可直接使用的列表。

完整示例Playbook

- name: "gitea - extract all usernames"
  set_fact:
    gitea_usernames: "{{ users_checklist.stdout_lines[1:] | map('split') | map(attribute='1') | list }}"

- name: "gitea - show extracted usernames"
  debug:
    var: gitea_usernames

预期执行结果

运行后会输出提取到的用户名列表:

ok: [giteahost] => {
    "gitea_usernames": [
        "Superadmin",
        "git"
    ]
}

补充说明

  • 如果输出行使用固定分隔符(如制表符),可指定split('\t')精准拆分,默认split()已适配任意空白分隔的场景。
  • 提取后的列表可直接用于后续任务,比如循环处理每个用户。

内容的提问来源于stack exchange,提问作者Sabin Andrei Drăghici

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:45:42