在bash脚本中提取子字符串

时间:2018-07-11 22:35:58

标签: regex bash

我不太擅长bash脚本编写。我需要提取一个字符串的两个单词之间的子字符串。我尝试了不同的方法。有人可以帮我吗?

这是我的文字“ RegionName”:“ eu-west-1”,“ LatestAmiId”:“ ami-0ebfeadd9ccacfbb2”,

请记住引号和逗号是String的一部分。我需要单独提取AMI ID,即“ LatestAmiId”:“ and ”,

之间的文本

有什么帮助吗?

1 个答案:

答案 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工具而非正则表达式来提取此信息。