arn:aws:iam::aws:policy/AmazonEC2FullAccess
arn:aws:iam::aws:policy/IAMFullAccess
arn:aws:iam::s:policy/CloudWatchAgentServerPolicy
arn:aws:iam::aws:policy/AdministratorAccess
arn:aws:iam::aws:policy/aws-service-role/AWSSupportServiceRolePolicy
arn:aws:iam::aws:policy/aws-service-role/AWSTrustedAdvisorServiceRolePolicy
arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
arn:aws:iam::aws:policy/aws-service-role/AmazonElasticFileSystemServiceRolePolicy
arn:aws:iam::aws:policy/IAMAccessAnalyzerFullAccess
arn:aws:iam::aws:policy/aws-service-role/AWSBackupServiceLinkedRolePolicyForBackup
这里我只需要最后的策略名称。
我只需要/之后的字母
这是使用(?<=/).*
的正则表达式
这个正则表达式的输出就是这个
arn:aws:iam::aws:policy/
AdministratorAccess
arn:aws:iam::aws:policy/
aws-service-role/AWSSupportServiceRolePolicy
正如你在1(中看到的那样,它是正确的,但在2(中,我需要最后一次出现/之后的字母
我需要删除除匹配情况以外的所有内容。
请某人放弃你的建议来实现这一点。
注意:我知道我可以使用boto3获得aws策略名称,但我对上面的用例很好奇。
您可以将grep
与regexp一起使用,并将结果写入另一个文件中。删除原件,如果你愿意的话。类似的东西
grep -Eao '(?<=/).*' 'logs.log' >result.log
您可以使用lookbacking断言,然后匹配除/
或换行符之外的任何字符,直到字符串[^/rn]+$
的末尾
(?<=/)[^/rn]+$
查看regex演示
如果你使用PCRE,你也可以使用K
来忘记到目前为止匹配的内容。
.*/K[^/rn]+$
请参阅另一个regex演示。