如何解决如何使用grep / awk / sed打印直到某个字符?
我是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"
但是我需要整个东西。任何帮助都会很棒。谢谢
解决方法
关于“我只想要第一次出现”这个问题,有一个通用答案,答案是:
... | head -n 1
这意味着,无论您做什么,都要采取行动(头几行),-n
开关使您可以说出想要的数量(在这种情况下为一个)。
可以对最后一次出现执行相同的操作,但是您使用tail
而不是head
(也可以使用-n
开关)。
尝试了许多事情之后。我找到了我想要的图案。
grep -Po '"country":.*?[^\\]",' $FILE | head -n 1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。