【发布时间】:2020-08-13 10:55:06
【问题描述】:
我是一个完整的 shell 脚本初学者,我正在尝试遍历一组 JSON 文件并尝试从中提取某个字段。每个 JSON 文件都有一个 "country:"xxx" 字段。在每个 JSON 文件中,有 10k 个具有相同国家名称的相同字段,所以我只需要第一次出现,我可以使用“-m 1”。
我尝试为此使用 grep,但无法弄清楚如何在第一次出现时从每个文件中提取包括国家名称在内的整个字段。
for FILE in *.json;
do
grep -o -a -m 1 -h -r '"country":"' $FILE;
done
我尝试使用另一个管道并使用以下模式,但它不起作用
| egrep -o '^[^"]+'
实际输出:
"country":"
"country":"
"country":"
期望的输出:
"country:"romania"
"country:"united kingdom"
"country:"tajikistan"
但我需要整件事。任何帮助都会很棒。谢谢
【问题讨论】:
-
Each JSON file所以使用 JSON 解析器,而不是 grep。 -
请编辑带有明确出席结果的问题
-
请注明您想要的输出。您是否从输入文件中要求一组独特的国家/地区?还是您只想从 each 文件返回第一个国家/地区?您当前获得的输出是因为您指定了
-o- 这将只输出字符串的匹配部分,而不是该行的其余部分 -
@arco444 我只需要每个文件中的第一个国家。如果我去掉 -o,我会得到很多东西,因为在 country 字段之后还有其他字段。