ansible - Ansible - 如何获取列表的第一列?
问题描述
我需要在 Ansible 中获取列表的第一行,我不知道该怎么做。
我的输出如下:
ok: [localhost] => {
"msg": [
"vg01 /dev/xvdk",
"vg01 /dev/xvdj",
"vg02 /dev/xvdi",
"vg02 /dev/xvdh",
"vg03 /dev/xvdg",
"vg03 /dev/xvdf"
]
}
我需要得到第一行(vg *)。
也许我可以在所有线路上循环来做到这一点,但我在想可能有一种可靠的方式,比如awk '{print $1}'
?
我试过了split
,但没有成功。
有人有解决方案吗?
谢谢你。
解决方案
首先,你想得到just the first row
还是first column in all rows
不清楚。
从输出中,输入是一个列表。如果我们假设输入即将到来my_list
并且您正在尝试从所有行中提取第一列,那么这应该会给出您想要的。
- name: extract first column
set_fact:
extracted_columns: "{{ extracted_columns|default([]) + [item.split(' ')[0]] }}"
with_items:
- "{{ my_list }}"
- name: display all extracted column as list
debug:
msg: "{{ extracted_columns }}"
输出会像
TASK [display all extracted column as list msg={{ extracted_columns }}] *******************
ok: [localhost] => {
"msg": [
"vg01",
"vg01",
"vg02",
"vg02",
"vg03",
"vg03"
]
}
union
过滤器可用于获取唯一值(注意:重用从先前任务中提取的值)
- name: extract unique first column
set_fact:
extracted_columns_unique: "{{ extracted_columns | default([]) | union(extracted_columns) }}"
with_items:
- "{{ my_list }}"
- name: display all extracted unique column as list
debug:
msg: "{{ extracted_columns_unique }}"
输出会像
TASK [display all extracted unique column as list msg={{ extracted_columns_unique }}] ******************************
ok: [localhost] => {
"msg": [
"vg01",
"vg02",
"vg03"
]
}
如果您想获取列表的第一项
# using index
- debug:
msg: "{{ my_list[0] }}"
或者
# using 'first' filter
- debug:
msg: "{{ my_list | first }}"
推荐阅读
- r - 根据函数创建数据框列
- python - 如何在 Python 中绘制这样的图?[包括截图]
- r - 从数据表列中满足的条件返回重复值的第一次出现
- javascript - 在网站页脚加载脚本,只有在 Hugo 的特定布局上?
- google-apps-script - 修改已发布的 Google Scripts 应用程序的访问权限不起作用
- css - 是否可以在 Grid.js 中指定 tr 样式?
- makefile - libtool:错误:除非指定了 -no-undefined,否则无法构建 x86_64-w64-mingw32 共享库
- android - Unity如何在Android中获取当前按下的UI按钮
- node.js - 我在使用 express 制作项目时发现了这个错误,谁能告诉我我错在哪里?
- html - 为什么这个 CSS 规则中只使用了类属性值的一部分?