我需要实现两件事。
从名为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'])
你能建议吗?
答案 0 :(得分:1)
解决方案:
- set_fact:
install_loc: "{{ install_loc.split('\n') | unique | select | list }}"
说明:
install_loc.split('\n')
-用换行符分隔install_loc
unique
-删除重复项select
-删除空值或空值list
-从Python“生成器”转换为列表如果您要使用单个字符串(作为输入),请用list
替换join('\n')
。