Ansible正则提取路径时排除软链指向后缀的实现方案
你现有正则的问题在于(/path/.+)中的.贪婪匹配逻辑会将后续的 -> /some/file也纳入捕获组范围,最终导致替换后仍携带多余后缀。
直接修改正则匹配规则即可实现需求:
- debug: msg: "{{ list1 | map('regex_replace', regxp, bckref) | list }}" vars: regxp: '^.* (/path/[^ ]+)(?: ->.*)?$' bckref: '\1'
正则规则说明:
^.*匹配行首到目标路径前最后一个空格的所有内容(/path/[^ ]+)捕获以/path/开头、直到第一个空格为止的所有字符(路径本身不含空格,不会误匹配后续内容)(?: ->.*)?$匹配可选的软链指向后缀,?:标记为非捕获组不参与替换,?标识该部分可不存在,兼容普通文件、目录的行格式
运行后即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者Vijesh
相关产品推荐
相关产品推荐

