如何使用grep/awk/sed打印到某个字符



我是shell脚本的初学者,我正在尝试迭代一组JSON文件,并试图从中提取某个字段。每个JSON文件都有一个"国家:";xxx">字段。在每个JSON文件中,有10k个相同字段具有相同的国家/地区名称,所以我只需要第一次出现,我可以使用"-m1";。

我试着使用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"

但我需要所有的东西。任何帮助都会很棒。感谢

这个问题有一个一般的答案"我只想第一次出现";,答案是:

... | head -n 1

这意味着,无论你做什么:取头(第一行(,-n开关都可以让你说出你想要多少(在这种情况下是一个(。

对于最后一次出现,也可以执行相同的操作,但随后使用tail而不是head(也可以使用-n开关(。

在尝试了许多事情之后。我找到了我要找的图案。

grep -Po '"country":.*?[^\]",' $FILE | head -n 1;

最新更新