我在ansible playbook中有一个变量dir_lst_raw
,其值为 list,如下所示:
"dir_lst_raw": [
"/path1/dir1/user",
"/path2/dir2/admin",
"/path3/dir3/user.ansible_backup_2020-03-16",
"/path1/dir1/config.ansible_backup_2020-03-16",
"/path2/dir2/dir3/somefile"
]
我需要删除所有包含.ansible_backup_
的行,并将其保存到另一个变量 list 中。我已经在谷歌上搜索了正则表达式,并尝试 * 不匹配选择过滤器 * 的模式,如下所示:
- set_fact:
dir_lst: "{{ dir_lst_flt_r | select('match','(^.ansible_backup_)+') | list }}"
但是新的变量dir_lst
变成了一个空列表。我期待dir_lst
如下:
"dir_lst_raw": [
"/path1/dir1/user",
"/path2/dir2/admin",
"/path2/dir2/dir3/somefile"
]
有人能建议我怎么做吗?
1条答案
按热度按时间zfycwa2u1#
Q:***“删除所有包含
.ansible_backup_
的行“***答:您可以使用简单的测试***搜索***。报价:
如果在字符串中的任何地方找到模式,则搜索成功。
或者你可以使用test***regex***。
regex的工作方式与search类似,但通过传递match_type关键字参数,regex也可以配置为执行其他测试...
两个选项给予结果相同
完整的测试行动手册示例