【发布时间】:2018-10-29 20:57:22
【问题描述】:
我想改进这一行:
aws_iam_role=$(aws iam get-role --role-name rl-company-admin --profile=company-bill |
jq -r '.Role.AssumeRolePolicyDocument.Statement[].Principal.AWS' |
sed "s/arn:aws:iam::123456789101:user\///g" |
grep tdunphy |
sed 's/"//g'|
sed 's/,//g')
这是未经处理的命令的原始输出:
aws iam get-role --role-name rl-company-admin --profile=company-bill
{
"Role": {
"Description": "company Admin Role",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789101:user/tdunphy",
"arn:aws:iam::123456789101:user/user1",
"arn:aws:iam::123456789101:user/user2",
"arn:aws:iam::123456789101:user/user3",
]
}
}
]
},
"MaxSessionDuration": 3600,
"RoleId": "AROAJGNAT3IXV7DIWSDCK",
"CreateDate": "2018-01-18T17:35:27Z",
"RoleName": "rl-company-admin",
"Path": "/",
"Arn": "arn:aws:iam::188087670762:role/rl-company-admin"
}
}
如何使用一个 sed 语句来处理此文本,而不是使用多个 sed 语句?
【问题讨论】:
-
为了提高效率,在
sed调用之前执行grep tdunphy。您也可以将sed 's/"//g'| sed 's/,//g'更改为sed 's/[,"]//g'。 -
您也可以使用
-r选项将其缩减为一个sed:sed -r 's/arn:aws:iam::832839043616:user\/|,|"//g' -
另见stackoverflow.com/questions/7657647/combining-2-sed-commands;简而言之,
sed "s/[\"']//g"