You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何从正斜杠分隔的字符串中提取指定值

你当前代码的问题在于:tail -n 1 取的是name字段按/分割后的最后一段内容,也就是操作ID 6109567339060002816,和你需要的数据集ID位置不符。

正确实现方案

以下几种方案都可以实现需求,你可以根据实际场景选择:

方法1:固定索引取值

如果name字段的路径结构固定为projects/<项目ID>/locations/<区域>/datasets/<数据集ID>/operations/<操作ID>,直接取分割后下标为5的元素即可:

- name: 获取dataset id
  debug: 
    msg : "{{ datasetInfo.json.name.split('/')[5] }}"

方法2:动态定位取值(兼容性更强)

如果担心后续路径层级发生变化,可以先定位到datasets字段的位置,再取下一位的取值,不受前后层级数量变化影响:

- name: 获取dataset id
  debug: 
    msg : "{{ datasetInfo.json.name.split('/')[datasetInfo.json.name.split('/').index('datasets') + 1] }}"

方法3:正则匹配提取

也可以通过正则表达式直接匹配datasets后的数字ID:

- name: 获取dataset id
  debug: 
    msg : "{{ datasetInfo.json.name | regex_search('datasets/(\\d+)/', '\\1') | first }}"

内容的提问来源于stack exchange,提问作者quicksilver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:54:04