特定字符串的数据提取



我有一个很长的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'

相关内容

  • 没有找到相关文章

最新更新