代码之家  ›  专栏  ›  技术社区  ›  Hearen

将一个数组转换为另一个数组

  •  0
  • Hearen  · 技术社区  · 7 年前

    我想把一个 输出阵列 .

    假设命令有以下输出:

    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栏

    list.stream().map(l -> l.getName()).collect(toList()) 在Java8中。

    ls -al 作为

    1. ls-铝
    2. 去第三纵队 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 }}"
    

    你知道吗?

    ls-铝 我的电脑中的输出类似于:

    -rw-rw-r-- 1 hearen hearen     1 Sep   5 12:55 tmp
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Hearen    7 年前

    我要通过 "{{ item.split()[2] }}" 而不是 cut -d' ' -f3 在使用

    1. 一个单一的任务,我可以直接用它来获得具体的 column ;

      - name: Get Second via split
        debug: 
          msg: "{{ item.split()[1] }}"
        loop: "{{ result.stdout_lines }}"
    
    1. 至于一些任务,我将使用 你可以参考一下 One loop over multiple Ansible tasks Apply with_items on multiple tasks How can Ansible loop over a sequence of tasks?
        2
  •  0
  •   techraf    7 年前

    don't parse ls output .

    如果您想获得所有者列表,可以这样做:

    - name: List a folder
      find:
        path: .
      register: find
    
    - debug:
        msg: "{{ find.files | map(attribute='pw_name') | list }}"