我正在尝试将输出数组转换为另一个 array 。
假设我从命令获得以下输出:
kube-system extension-apiserver-authentication 6 119d
kube-system kube-dns 0 119d
kube-system kube-dns-autoscaler 1 119d
kube-system kube-flannel-cfg 2 119d
kube-system kubernetes-dashboard-settings 1 29d
我希望每个元素cut -d' ' -f2
得到一个仅包含第2列的数组。
类似于Java 8中的list.stream().map(l -> l.getName()).collect(toList())
。
要在本地进行测试,我尝试使用ls -al
作为
ls -al
一个文件夹; owner
并返回所有者列表; 演示将是:
- name: Run in local to test loop
hosts: 127.0.0.1
connection: local
tasks:
- name: List a folder
shell: ls -al .
register: result
- debug:
msg: "{{ result.stdout_lines }}"
- name: Get Second Separated by Space
shell: echo '{{ item }}' | cut -d' ' -f3; # trying to get column 3
loop: "{{ result.stdout_lines }}"
register: result # this result is not what I am after :(
- debug:
msg: "{{ result }}"
对此有任何想法吗?
F.Y.I
我的PC中的ls -al
输出类似于:
-rw-rw-r-- 1 hearen hearen 1 Sep 5 12:55 tmp
答案 0 :(得分:0)
不要使用Ansible来实现您在Bash和don't parse ls
output中编写的代码。
如果要获取所有者列表,可以使用以下方法:
$.ajax({
url: "@Url.Action("GetState", "Country")",
async: true,
data: { search: search, StateId: state },
success: function (data) {
}
});
答案 1 :(得分:0)
我正在通过"{{ item.split()[2] }}"
而不是cut -d' ' -f3
解决此问题,使用 cut 元素有两种情况:
column
; - name: Get Second via split
debug:
msg: "{{ item.split()[1] }}"
loop: "{{ result.stdout_lines }}"