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"}}
我想抽取出 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的行数,即可计算出题目的结果