Ansible-如何获取列表的第一列?
我需要在Ansible中获取列表的第一行,我不知道如何操作。Ansible-如何获取列表的第一列?,ansible,Ansible,我需要在Ansible中获取列表的第一行,我不知道如何操作。 我的输出如下: ok: [localhost] => { "msg": [ "vg01 /dev/xvdk", "vg01 /dev/xvdj", "vg02 /dev/xvdi", "vg02 /dev/xvdh", "vg0
我的输出如下:
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}'
?我尝试过拆分,但没有成功。
有人有办法吗?
谢谢。首先,您想只获取第一行还是所有行的第一列还不清楚 从输出来看,输入是一个列表。如果我们假设输入是作为
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"
]
}
TASK [display all extracted unique column as list msg={{ extracted_columns_unique }}] ******************************
ok: [localhost] => {
"msg": [
"vg01",
"vg02",
"vg03"
]
}
union
过滤器可用于获取唯一值(注意:重用上一个任务中提取的值)
输出将类似于
TASK [display all extracted column as list msg={{ extracted_columns }}] *******************
ok: [localhost] => {
"msg": [
"vg01",
"vg01",
"vg02",
"vg02",
"vg03",
"vg03"
]
}
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] }}"
或
嗨,阿伦,对不起,正如你正确猜到的,我在找第一个专栏。编辑了这个问题。太感谢你了。你的回答回答了我的问题。我在想可能有一个python函数,它只会对第1列进行排序,但显然不是。再次感谢!