Shell脚本字符串提取

时间:2017-10-13 03:25:26

标签: shell

我从某些服务中获取字符串,

{"statusCode":200,"statusText":"OK","responseEntity":{"authMethod":"Bearer","encodedHeader":"SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk","expiresDate":"2017-10-16T14:58:24.697Z"}}

我想提取

的encodedHeader值
SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk

我尝试使用我知道的版本,但没有运气。 对此有任何帮助

3 个答案:

答案 0 :(得分:2)

如果你有GNU awk那么

awk 'match($0,/"encodedHeader":"([^"]*)"/,arr){print arr[1]}' <<<"$line"

测试结果:

$ line='{"statusCode":200,"statusText":"OK","responseEntity":{"authMethod":"Bearer","encodedHeader":"SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk","expiresDate":"2017-10-16T14:58:24.697Z"}}';
$ awk 'match($0,/"encodedHeader":"([^"]*)"/,arr){print arr[1]}' <<<"$line"
SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk

答案 1 :(得分:0)

以下是使用AWK进行此操作的一种方法。

~$ myline={"statusCode":200,"statusText":"OK","responseEntity":{"authMethod":"Bearer","encodedHeader":"SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk","expiresDate":"2017-10-16T14:58:24.697Z"}}

并且

~$ echo $myline  | awk -F[:,] '{print $9 }'

OUPUTS:

SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk

[:,]匹配列表中的单个字符。

,:是字段分隔符,您想要的字段是数字9。

答案 2 :(得分:0)

awk -F\" '{print $16}' file

SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk