Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ansible/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Filter 从Ansible变量中删除重复行_Filter_Ansible_Duplicates_Output - Fatal编程技术网

Filter 从Ansible变量中删除重复行

Filter 从Ansible变量中删除重复行,filter,ansible,duplicates,output,Filter,Ansible,Duplicates,Output,我需要实现两件事 从名为install_loc的ansible变量中删除重复项 从install_loc中删除所有空白行 下面是如何构造install_loc变量 - set_fact: install_loc: "{{ install_loc | default('') + item.split( )[4] | dirname + '\n' }}" loop: "{{ fdet }}" 以下是将install_loc写入文件后的内容 /app/logs/scri

我需要实现两件事

  • 从名为install_loc的ansible变量中删除重复项

  • 从install_loc中删除所有空白行

  • 下面是如何构造install_loc变量

       - set_fact:
           install_loc: "{{ install_loc | default('') + item.split( )[4] | dirname + '\n' }}"
         loop: "{{ fdet }}"
    
    以下是将install_loc写入文件后的内容

    /app/logs/scripts
    /app/logs/mrt
    /app/logs/com
    /app/logs/exe
    
    /app/logs/scripts
    /app/logs/mrt
    /app/logs/com
    /app/logs/exe
    
    /app/logs/scripts
    /app/logs/mrt
    /app/logs/com
    /app/logs/exe
    
    正如您可以看到的那样,变量是换行符和重复条目

    所需输出应如下所示。注意:顺序不重要:

    /app/logs/scripts
    /app/logs/mrt
    /app/logs/com
    /app/logs/exe
    
    我试过了

       - set_fact:
           install_loc: "{{ install_loc | unique }}"  
    
    但我得到的扭曲文本如下所示:

    set([u'\n', u'/', u'.', u'1', u'0', u'3', u'2', u'C', u'E', u'G', u'F', u'I', u'N', u'a', u'c', u'e', u't', u'i', u'm', u'o', u'o', u'n', u's', u's', u'r', u'u', u't', u'x'])
    
    你能建议一下吗?

    解决方案:

    - set_fact:
        install_loc: "{{ install_loc.split('\n') | unique | select | list }}"
    
    说明:

    • install\u loc.split('\n')
      -按换行符拆分
      install\u loc
    • unique
      -删除重复项
    • 选择
      -清除空值或空值
    • list
      -将Python“生成器”转换为列表

    如果需要单个字符串(作为输入),请将
    list
    替换为
    join('\n')

    ,这将使install\u loc成为一个列表而不是字符串,并且在写入文件时如下所示:['/app/logs/scripts'、'/app/logs/mrt'、'/app/logs/com'、'/app/logs/exe']当我想让它看起来像/app/logs/scripts/app/logs/mrt/app/logs/com/app/logs/exe时,如果我从命令中删除列表,它会打印在文件中,并带有内联模块。请参阅我答案的最后一行。谢谢@mhurter这回答了我的问题。然而,我无法在不同的剧本中阅读这个变量。如果您能提供帮助,我在此处发布了一个新的查询: