我有很多json文件,其结构如下所示:
{
key1: 'val1'
key2: {
'key21': 'someval1',
'key22': 'someval2',
'key23': 'someval3',
'date': '2018-07-31T01:30:30Z',
'key25': 'someval4'
}
key3: []
... some other objects
}
我的目标是仅获取日期字段来自某个时期的这些文件。 例如从2018-05-20到2018-07-20。 我无法基于此文件的创建日期,因为所有这些都是在一天内生成的。 也许可以使用sed或类似程序吗?
答案 0 :(得分:1)
幸运的是,可以将这种格式的日期作为字符串进行比较。您只需要解析JSON的内容,例如Perl:
perl -l -0777 -MJSON::PP -ne '
$date = decode_json($_)->{key2}{date};
print $ARGV if $date gt "2018-07-01T00:00:00Z";
' *.json
-0777
使perl吞噬整个文件,而不是逐行读取它们-l
向print
$ARGV
包含当前正在处理的文件的名称有关详细信息,请参见JSON::PP。如果您有JSON::XS或Cpanel::JSON::XS,则可以切换到它们以进行更快的处理。
我不得不修正输入(用'
替换"
,添加逗号等),以使解析器满意。
答案 1 :(得分:-2)
尝试这样:
查找在线转换器。 (例如:https://codebeautify.org/json-to-excel-converter#)并将Json转换为CSV
使用Excel打开CSV文件
过滤数据