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

如何拆分cargo metadata命令输出、提取路径后实现shell循环遍历

实现方案

你可以直接用以下两种写法实现需求,都适配你指定的正则匹配规则:

写法1:bash内置正则匹配(更稳妥,兼容路径含空格的场景)

cargo metadata | jq -r '.workspace_members[]' | while IFS= read -r line; do
  # 用你指定的正则匹配提取路径
  [[ $line =~ path\+file:(.*)\) ]] && path="${BASH_REMATCH[1]}"
  # 遍历操作示例
  echo "$path"
done

写法2:sed提取+for循环(更简洁,适合无空格路径场景)

for path in $(cargo metadata | jq -r '.workspace_members[]' | sed -n 's/.*path\+file:\(.*\)).*/\1/p'); do
  echo "$path"
done

说明

  • 给jq加-r参数是为了去除输出结果默认带的外层双引号,减少多余字符串处理
  • 第一种写法用bash原生的正则匹配功能,BASH_REMATCH[1]对应正则第一个捕获组的内容,也就是你需要的路径字符串
  • 第二种写法依赖sed的替换能力,直接过滤并提取所有匹配的路径,适合快速遍历使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:36:03