给定以下字符串:

arn:aws:secretsmanager:us-east-1:3264873466873:secret:foo/bar 1564681234.974 foo/bar {"username":"admin","password":"admin123","secret_key":"KASJDFJHAKHFKAHASDF"} 4e397333-3797-4f0b-ad7e-8c1cc0ed041c VERSIONSTAGES AWSCURRENT

shell脚本中,如何仅提取JSON部分以如下所示结束:

{"username":"admin","password":"admin123","secret_key":"KASJDFJHAKHFKAHASDF"}

我能够使用两个sed命令来做到这一点:

echo $longString | sed 's/^.*{/{/' | sed 's/}.*$/}/'

但是想知道是否有一种方法可以只使用一个命令。

分析解答

要提取输入的连续部分,可以使用grep及其-o选项(如果系统支持)。它告诉grep只输出匹配的部分。

grep -o '{.*}'