将 JSON 转换为所有用 jq 标记为 "name" 的事物的换行符分隔列表
Convert JSON to a newline-delimited list of all the things tagged "name" with jq
我正在尝试根据人口超过 15000 人的城市数据集制作一个 .txt 城市列表。 JSON 的结构如下:
[
{
"country": "United States",
"geonameid": 5376890,
"name": "Newport Beach",
"subcountry": "California"
},
{
"country": "United States",
"geonameid": 5377100,
"name": "Nipomo",
"subcountry": "California"
},
{
"country": "United States",
"geonameid": 5377199,
"name": "Norco",
"subcountry": "California"
},
{
"country": "United States",
"geonameid": 5377613,
"name": "North Glendale",
"subcountry": "California"
},
{
"country": "United States",
"geonameid": 5377640,
"name": "North Highlands",
"subcountry": "California"
}
]
我想把它变成一个以换行符分隔的所有标记为“name”的列表,如下所示:
Newport Beach
Nipomo
Norco
North Glendale
North Highlands
我尝试使用我发现的名为 jq 的工具在命令行上执行此操作,不过我可以通过编写类似
的东西来工作
cat world_cities.json | jq '.name' > cities_list.txt
但我收到一条错误消息“jq:错误(位于:0):无法使用字符串“name”索引数组”。
当然,我确定我不完全理解 jq 应该如何工作,而且我没有太多解析 JSON 的经验,但我很难在网上找到我的具体问题的答案.有谁知道我可以做什么来实现我想从命令行实现的目标?
如果你想查看我正在尝试解析的整个数据集,你可以在这里找到它:https://pkgstore.datahub.io/core/world-cities/world-cities_json/data/5b3dd46ad10990bca47b04b4739a02ba/world-cities_json.json
$ jq -r '.[].name' world_cities.json
Newport Beach
Nipomo
Norco
North Glendale
North Highlands
数据被数组包围。您可以使用 .[]
访问元素:.
是数组本身,[]
给出它的元素。然后 .name
给你每个元素的名称。
最后,使用 -r
让 jq 输出不带引号的原始字符串。
我正在尝试根据人口超过 15000 人的城市数据集制作一个 .txt 城市列表。 JSON 的结构如下:
[
{
"country": "United States",
"geonameid": 5376890,
"name": "Newport Beach",
"subcountry": "California"
},
{
"country": "United States",
"geonameid": 5377100,
"name": "Nipomo",
"subcountry": "California"
},
{
"country": "United States",
"geonameid": 5377199,
"name": "Norco",
"subcountry": "California"
},
{
"country": "United States",
"geonameid": 5377613,
"name": "North Glendale",
"subcountry": "California"
},
{
"country": "United States",
"geonameid": 5377640,
"name": "North Highlands",
"subcountry": "California"
}
]
我想把它变成一个以换行符分隔的所有标记为“name”的列表,如下所示:
Newport Beach
Nipomo
Norco
North Glendale
North Highlands
我尝试使用我发现的名为 jq 的工具在命令行上执行此操作,不过我可以通过编写类似
的东西来工作cat world_cities.json | jq '.name' > cities_list.txt
但我收到一条错误消息“jq:错误(位于:0):无法使用字符串“name”索引数组”。 当然,我确定我不完全理解 jq 应该如何工作,而且我没有太多解析 JSON 的经验,但我很难在网上找到我的具体问题的答案.有谁知道我可以做什么来实现我想从命令行实现的目标?
如果你想查看我正在尝试解析的整个数据集,你可以在这里找到它:https://pkgstore.datahub.io/core/world-cities/world-cities_json/data/5b3dd46ad10990bca47b04b4739a02ba/world-cities_json.json
$ jq -r '.[].name' world_cities.json
Newport Beach
Nipomo
Norco
North Glendale
North Highlands
数据被数组包围。您可以使用 .[]
访问元素:.
是数组本身,[]
给出它的元素。然后 .name
给你每个元素的名称。
最后,使用 -r
让 jq 输出不带引号的原始字符串。