我有一个JSON文件,“name”作为键,“url”作为另一个键。不是JSON中的所有记录都有“url”键。所以当我试图写入文本时,它被写为空。所以,我必须检查url键是否存在,如果存在,那么它必须被写入2个输出文本文件。name将后藤name.txt,url将转到url.txt
{ [ {"name": "a", url: "url1"}, {"name": "b"}, {"name": "C"} ] }
预期输出:
name.txt
a
url.txt
url
目前为止,我尝试的是:
name=`hdfs dfs -cat $path | jq -r '.name'`
url=`hdfs dfs -cat $path | jq -r '.name'`
echo ${name} >> name.txt
echo ${url} >> url.txt
上面的问题是,如果找不到url,它会将空值写入输出文件,并将等效名称写入name.txt文件。
如何在找不到url json标记时跳过记录不写入输出文件
1条答案
按热度按时间8wigbo561#
显然你需要先到
select(.url)
。同时调用hdfs和jq两次似乎有点奢侈,如果考虑到效率,您可能希望将hdfs的结果保存到一个文件中,然后调用jq两次,或者更好的办法是在一个管道中只调用hdfs和jq一次,然后调用awk来写入这两个文件。