我从某些服务中获取字符串,
{"statusCode":200,"statusText":"OK","responseEntity":{"authMethod":"Bearer","encodedHeader":"SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk","expiresDate":"2017-10-16T14:58:24.697Z"}}
我想提取
的encodedHeader值SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk
我尝试使用我知道的版本,但没有运气。 对此有任何帮助
答案 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