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

如何从环境变量FILE_CONTENTS中提取default的key_id值?

提取配置文件中[default]项下的key_id值

现有配置内容如下:

credentials:
  [default]
  key_id = AKIAGHJQTOP
  secret_key = alcsjkf
  [default2]
  key_id = AKIADGHNKVP
  secret_key = njprmls

需要提取[default]段下的key_id值,要求从环境变量FILE_CONTENTS读取内容,不传入文件名。之前尝试的命令无效:

export VAR=$(echo "$FILE_CONTENTS" | awk '/credentials.default.key_id/ {print $2}')

方法一:awk精准匹配

你的awk命令失效是因为正则表达式写错了,原配置里不存在credentials.default.key_id这类字符串。正确思路是先定位到[default]段,再提取对应key_id的值:

export VAR=$(echo "$FILE_CONTENTS" | awk '/\[default\]/ {flag=1; next} /\[.*\]/ {flag=0} flag && /key_id/ {print $3}')

逻辑说明:

  • /\[default\]/ {flag=1; next}:匹配到[default]时,开启标记flag并跳过当前行
  • /\[.*\]/ {flag=0}:匹配到其他配置段(比如[default2])时,关闭标记
  • flag && /key_id/ {print $3}:标记开启状态下,匹配到key_id行时输出第3个字段(即对应的值)

方法二:grep+sed组合(更简洁)

如果追求快速实现,用grep搭配sed的组合也能完成需求:

export VAR=$(echo "$FILE_CONTENTS" | grep -A2 '\[default\]' | grep key_id | sed 's/.*= //')

逻辑说明:

  • grep -A2 '\[default\]':匹配[default]并输出其后续2行内容
  • grep key_id:从结果中筛选出包含key_id的行
  • sed 's/.*= //':删除=及之前的所有字符,只保留对应的值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:35:22