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

如何用jq修改AWS CLI输出,移除Cognito用户池名称前缀

移除Cognito用户池名称的cust_前缀

没问题,这事儿用jq的字符串处理功能就能轻松搞定,给你两种实用的方案,适配不同场景:

方案一:正则精确替换(推荐)

如果担心有些名称可能不包含cust_前缀,或者想严格只替换开头的前缀,用正则匹配的方式最稳妥:

aws cognito-idp list-user-pools --max-results 60 --region us-west-2 --query 'UserPools[*].{Names:Name}' | jq 'map(.Names |= sub("^cust_"; ""))'

细节拆解:

  • map(...):遍历AWS CLI返回的用户池对象数组,对每个对象做处理
  • .Names |= sub("^cust_"; ""):针对每个对象的Names字段,用sub()函数执行正则替换。^符号确保只匹配字符串开头的cust_,避免误删名称中间出现的相同字符组合

方案二:直接截断前缀(高效简洁)

既然你提到所有名称都带有cust_前缀,那可以用更简单的字符串截断方式,执行效率更高:

aws cognito-idp list-user-pools --max-results 60 --region us-west-2 --query 'UserPools[*].{Names:Name}' | jq 'map(.Names |= ltrimstr("cust_"))'

细节拆解:

  • ltrimstr("cust_"):直接从字符串开头移除指定的前缀内容,逻辑简单直接,但只适合所有名称都明确带有该前缀的场景

额外优化:输出纯名称列表

如果你不需要保留原有的{Names: ...}对象结构,只想得到干净的名称字符串数组,可以调整命令:

aws cognito-idp list-user-pools --max-results 60 --region us-west-2 --query 'UserPools[*].Name' | jq 'map(sub("^cust_"; ""))'

这样输出的就是纯字符串数组,没有多余的键名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:22:15