shell 解析 json

如果 想利用 shell 从 json 数据 中 解析出某个字段, 可以 利用 正则匹配, 比如 想 解析出 "spanId":"8461203268866670975" 这个字段,可以利用如下 shell 脚本:

grep -Po '"spanId":".*?"' | grep -Po '\d+'

 比如文件test1.txt中的其中一条数据:

{"uid":"300","timeStamp":1469758852856,"albumId":707,"trackId":6825,"feedbackSource":"","reasonList":["wt","dl","bc","ba","bc"],"props":{"rec_level":"ALBUM"}}
View Code

我想抽取出 albumId 后面的数字 707,则

grep -Po '(?<=albumId":)[0-9]+' test1.txt

获取下面文本[后面的数字23或,后面的数字34

10    [23|0.1|45,34|0.2|67]
grep -Po '(?<=\[)[0-9]+|(?<=,)[0-9]+'

 

题目:计算两个字符串文本两个字段相同的行数

思路:

1. 设文本A, 文本B,其中 A 的行数 小于 B 的行数
2. 先用 cat , grep 等基本命令对文本 A 进行初步筛选出 文本A1
3. 利用 grep -Po 从 文本A1中只选取特定字段到文本A2
4. while read line; do cat B | grep \"id\":\"$line\" >> rec.txt; done < A2
其中 id 是文本B的特定字段
5. 通过计算文本rec.txt的行数,即可计算出题目的结果

 

posted @ 2016-05-29 14:40  lasclocker  阅读(37591)  评论(1编辑  收藏  举报