我不太擅长bash脚本编写。我需要提取一个字符串的两个单词之间的子字符串。我尝试了不同的方法。有人可以帮我吗?
这是我的文字“ RegionName”:“ eu-west-1”,“ LatestAmiId”:“ ami-0ebfeadd9ccacfbb2”,
请记住引号和逗号是String的一部分。我需要单独提取AMI ID,即“ LatestAmiId”:“ and ”,
之间的文本有什么帮助吗?
答案 0 :(得分:2)
假设您将此字符串存储在变量名input_text
中,则可以像这样使用sed获取AmiId
ami_id=$(echo "$input_text" | sed -e 's/.*LatestAmiId": "//' -e 's/",$//')
这使用了两个不同的sed脚本:
s/.*LatestAmiId": "//
用所有内容替换LatestAmiId": "
之前的所有文本
s/",$//
将行尾的",
替换为空
正如我在评论中提到的那样,jq是一种在bash脚本中使用JSON对象时非常有用的工具。由于您的输入字符串看起来像是来自AWS api的json响应中的一部分,因此我强烈建议使用json工具而非正则表达式来提取此信息。