Shell脚本字符串提取
我从这样的服务中得到了线索Shell脚本字符串提取,shell,Shell,我从这样的服务中得到了线索 {"statusCode":200,"statusText":"OK","responseEntity":{"authMethod":"Bearer","encodedHeader":"SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk","expiresDate":"2017-10-16T14:58:24.697Z"}} 我想提取encodedHeader值 SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2
{"statusCode":200,"statusText":"OK","responseEntity":{"authMethod":"Bearer","encodedHeader":"SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk","expiresDate":"2017-10-16T14:58:24.697Z"}}
我想提取encodedHeader值
SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk
我用我知道的版本试过sed,但运气不好。
关于这方面的任何帮助这里有一种使用
AWK
的方法
~$ myline={"statusCode":200,"statusText":"OK","responseEntity":{"authMethod":"Bearer","encodedHeader":"SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk","expiresDate":"2017-10-16T14:58:24.697Z"}}
及
输出:
SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk
[:,]匹配列表中的单个字符
,:
是字段分隔符,您想要的字段是数字9。如果您有GNUawk
,那么
awk 'match($0,/"encodedHeader":"([^"]*)"/,arr){print arr[1]}' <<<"$line"
awk'match($0,/“encodedHeader”):“([^”]*)”/,arr){print arr[1]}如果答案符合您的要求,您可以随时接受:)初学者我建议您使用@3161993解决方案+1:)。您不必担心字段数量会发生变化。
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
awk -F\" '{print $16}' file
SCBjYjA5MTEtNTFjZi00ZTBjLWFmN2UtMzFhDTYzYzA3EjFk