gpt4 book ai didi

awk - Grep 来自大文件的多个输入,但每个输入仅第一次出现

转载 作者:行者123 更新时间:2023-12-02 01:26:58 27 4
gpt4 key购买 nike

我正在尝试根据 geojson 的数据构建一个“唯一”邮政编码列表。目标是 grep 每个邮政编码一整行。每个邮政编码可能有多个条目,我所关心的是每个邮政编码获取一个条目。

我准备了一个“独特的”邮政编码文件作为 grep 传递,以作为列表的“过滤器”运行。但是,这仍然会为每个邮政编码返回多个结果。当用 -m 1 限制结果时,我只能得到第一个匹配项。

如何从“大文件”中过滤每行一个条目?

输入(示例)

9417 TG
9423 TA
9431 HK
9883 TB
9965 TN

命令:grep -f infile.txt bigfile.txt

输出:

9417 TG Spier   Drenthe                                 NLD Netherlands 52.8178 6.4592  ;
9423 TA Hoogersmilde Drenthe NLD Netherlands 52.9098 6.3685 ;
9417 TG Spier Drenthe NLD Netherlands 52.8178 6.4658 ;
9423 TA Hoogersmilde Drenthe NLD Netherlands 52.9066 6.3802 ;
9431 HK Westerbork Drenthe NLD Netherlands 52.8613 6.6029 ;
9431 HK Oosterwolde Friesland NLD Netherlands 52.9851 6.2986 ;
9883 TB Zuurdijk Groningen NLD Netherlands 53.3147 6.3558 ;
9965 TN Zuurdijk Groningen NLD Netherlands 53.3506 6.3691 ;
9965 TN Leens Groningen NLD Netherlands 53.3523 6.37 ;
9883 TB Oldehove Groningen NLD Netherlands 53.3108 6.3632 ;

如您所见,有两个条目:9423 TA9965 TN

如何将其压缩为每个列表一个条目?

非常感谢您的帮助!

最佳答案

这是更适合awk的工作:

awk '
NR == FNR {
zip[$1] = $2
next
}
$2 == zip[$1] {
print
delete zip[$1]
}' infile.txt bigfile.txt

9417 TG Spier Drenthe NLD Netherlands 52.8178 6.4592 ;
9423 TA Hoogersmilde Drenthe NLD Netherlands 52.9098 6.3685 ;
9431 HK Westerbork Drenthe NLD Netherlands 52.8613 6.6029 ;
9883 TB Zuurdijk Groningen NLD Netherlands 53.3147 6.3558 ;
9965 TN Zuurdijk Groningen NLD Netherlands 53.3506 6.3691 ;

关于awk - Grep 来自大文件的多个输入,但每个输入仅第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74286113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com