我有一个很长的JSON数据列表,其中重复的内容类似于以下内容。
由于原始JSON文件太长,我将在这里分享超链接。这是从名为RegulomeDB的数据库生成的结果。
直接链接到JSON文件
我想从"method": "eQTLs"
和"value": "xxxx"
中提取特定的数据(eqtl),并将它们放入如下所示的2列(制表符分隔)中。注:检测到"method": "eQTLs"
后立即提取"value":"xxxx"
eQTLs firstResult, secondResult, thirdResult, ...
在这个例子中,期望的输出是:
eQTLs EIF3S8, EIF3CL
我尝试使用python脚本,但没有成功。
import json
with open('file.json') as f:
f_json = json.load(f)
print 'f_json[0]['"method": "eQTLs"'] + "t" + f_json[0]["value"]
谢谢你的帮助。
也许您会发现json解析器非常有用。它可以打开url,可以按你想要的方式操作字符串:
$ xidel -s "https://regulomedb.org/regulome-search/?regions=chr16:28539847-28539848&genome=GRCh37&format=json"
-e '"eQTLs	"||join($json("@graph")()[method="eQTLs"]/value,", ")'
eQTLs EIF3S8, EIF3CL
或者使用XPath/XQuery 3.1语法:
-e '"eQTLs	"||join($json?"@graph"?*[method="eQTLs"]?value,", ")'
试试这个:
cat file.json | grep -iE '"method":s*"eQTLs"[^}]*' -o | cut -d ',' -f 1,5 | sed -r 's/"|:|method|value//gi' | sed 's/s*eqtls,s*//gi' | tr 'n' ',' | sed 's/,$/n/g' | sed 's/,/, /g' | xargs echo -e 'eQTLsx09'