Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从txt文件中提取JSON值,并用逗号分隔_Json_Bash - Fatal编程技术网

从txt文件中提取JSON值,并用逗号分隔

从txt文件中提取JSON值,并用逗号分隔,json,bash,Json,Bash,我有一个带有curl响应的txt文件,其中包含下载的数千个文件的信息以及它们下载的年份。 我尝试(sed+grep)提取文件名和年份并将它们写入一个单独的文件(“filname+year.txt”),以逗号分隔,但没有成功 {"status_code":"200", "status_message":"Results found.", "results":[{"filename":"test189.pdf", "year":"2012", "URL

我有一个带有curl响应的txt文件,其中包含下载的数千个文件的信息以及它们下载的年份。 我尝试(sed+grep)提取文件名年份并将它们写入一个单独的文件(“filname+year.txt”),以逗号分隔,但没有成功

{"status_code":"200",
    "status_message":"Results found.",
    "results":[{"filename":"test189.pdf",
        "year":"2012",
        "URL":"https:\/\/www.orkistar.org\/random.php?q=iper.pdf&y=2012"
    } 
......

有什么想法吗

使用JSON感知工具,例如
jq

jq -r '.results[] as $r | $r.filename + "," + $r.year' < file.json
jq-r'.results[]为$r |$r.filename+”,“+$r.year”
使用JSON感知工具,例如
jq

jq -r '.results[] as $r | $r.filename + "," + $r.year' < file.json
jq-r'.results[]为$r |$r.filename+”,“+$r.year”
jq有一个用于转换为CSV的过滤器。假设目标是生成有效的CSV,则使用它可确保适当处理各种边缘情况:

jq -r '.results[] | [.filename, .year] | @csv' file.json

在任何情况下,请注意,不需要引入任何命名变量。

jq有一个用于转换为CSV的过滤器。假设目标是生成有效的CSV,则使用它可确保适当处理各种边缘情况:

jq -r '.results[] | [.filename, .year] | @csv' file.json

无论如何,请注意,不需要引入任何命名变量。

因为JSON是JavaScript对象表示法,所以使用Node和JavaScript相对容易。你的JavaScript怎么样?是什么产生了JSON,为什么它要避开URL中的斜杠?因为JSON是JavaScript对象表示法,所以使用Node和JavaScript相对容易。你的JavaScript怎么样了?是什么产生了JSON,为什么它要避开URL中的斜杠?请不要在问题中添加标签,这样你的答案看起来更合适。OP可能有很好的理由不使用(或包括)jq。虽然jq可能是处理这个问题的“正确”方式,但在OP把它放在那里之前,它不是问题的一部分。我理解这一点,但是(a)OP是一个新的投稿人,写了“有什么想法吗?”,以及(b)第一次提到jq并且最有观点的答案不是我的。因此,我认为在这种情况下,添加相关标签既合理又有帮助。或者这是一个缺陷,所以Q和a没有单独的标签?所以。。。(a) 对“有什么想法吗?”更好的回答可能是将OP提交给。新事物并不能成为钓鱼请求的借口,它只会让回应不那么尖锐。(b)别人回答的分数与你如何管理自己无关。对OP的一个评论是“你知道关于jq的
jq
?”这是完全合理的。将问题更改为与您的答案匹配是不正确的。至于你的问题。。。这是一个很好的问题,我鼓励你继续提问。请不要在问题上添加标签,这样你的答案看起来更合适。OP可能有很好的理由不使用(或包括)jq。虽然jq可能是处理这个问题的“正确”方式,但在OP把它放在那里之前,它不是问题的一部分。我理解这一点,但是(a)OP是一个新的投稿人,写了“有什么想法吗?”,以及(b)第一次提到jq并且最有观点的答案不是我的。因此,我认为在这种情况下,添加相关标签既合理又有帮助。或者这是一个缺陷,所以Q和a没有单独的标签?所以。。。(a) 对“有什么想法吗?”更好的回答可能是将OP提交给。新事物并不能成为钓鱼请求的借口,它只会让回应不那么尖锐。(b)别人回答的分数与你如何管理自己无关。对OP的一个评论是“你知道关于jq的
jq
?”这是完全合理的。将问题更改为与您的答案匹配是不正确的。至于你的问题。。。这是一个很好的问题,我鼓励你继续问下去。