首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从shell命令的输出中提取引用字符串的内容?

如何从shell命令的输出中提取引用字符串的内容?
EN

Stack Overflow用户
提问于 2017-05-03 08:59:38
回答 4查看 132关注 0票数 0

以下shell命令返回包含3个项的输出:

代码语言:javascript
运行
复制
cred="$(aws sts assume-role --role-arn arn:aws:iam::01234567899:role/test --role-session-name s3-access-example --query '[Credentials.AccessKeyId, Credentials.SecretAccessKey, Credentials.SessionToken]')"

echo $cred返回以下输出:

代码语言:javascript
运行
复制
[ "ASRDTDRSIJGISGDT", "trttr435", "DF/////eraesr43" ]

如何检索双引号之间的值?例如,trttr435如何实现这一点?使用regex?还是其他选择?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-03 11:13:57

代码语言:javascript
运行
复制
IFS=', ' credArray=(`echo "$cred" | tr -d '"[]'`)

很简单就像..。那

测试

代码语言:javascript
运行
复制
cred='[ "ASRDTDRSIJGISGDT", "trttr435", "DF/////eraesr43" ]'
IFS=', ' credArray=(`echo "$cred" | tr -d '"[]'`)
for i in "${credArray[@]}"; do echo "[$i]"; done
echo "2nd parameter is ${credArray[1]}"

输出

代码语言:javascript
运行
复制
[ASRDTDRSIJGISGDT]
[trttr435]
[DF/////eraesr43]
2nd parameter is trttr435

在和CentOS bash上进行测试

票数 1
EN

Stack Overflow用户

发布于 2017-05-03 10:07:57

我不太明白[]是否在$cred中,或者您期望的输出是什么,但是这将返回双引号之间的所有内容:

代码语言:javascript
运行
复制
$ awk '{while(match($0,/"[^"]+"/)){print substr($0,RSTART+1,RLENGTH-2);$0=substr($0,RSTART+RLENGTH)}}' file
ASRDTDRSIJGISGDT
trttr435
DF/////eraesr43

你可以而且很可能希望:

代码语言:javascript
运行
复制
$ echo "$cred" | awk ... # add above script here 

编辑:如果您只想从第二个字段($2)获得引用的字符串:

代码语言:javascript
运行
复制
$ awk -F, '{match($2,/"[^"]+"/);print substr($2,RSTART+1,RLENGTH-2)}' file
trttr435

甚至:

代码语言:javascript
运行
复制
$ awk -F, '{gsub(/^[^"]+"|"[^"]*$/,"",$2);print $2}' file
票数 1
EN

Stack Overflow用户

发布于 2017-05-03 10:21:36

或者使用python,因为cred的内容已经是一个有效的python数组:

代码语言:javascript
运行
复制
#!/bin/bash

cred='[ "ASRDTDRSIJGISGDT", "trttr435", "DF/////eraesr43" ]'

python-script() {
    local INDEX=$1
    echo "arr=$cred"
    echo "print(arr[$INDEX])"
}

item() {
    local INDEX=$1
    python-script "$INDEX" | python
}


echo "item1=$(item 1)"
echo "item2=$(item 2)"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43755548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档