gpt4 book ai didi

awk - 使用 awk 合并文件

转载 作者:行者123 更新时间:2023-12-04 16:24:05 25 4
gpt4 key购买 nike

我正在尝试根据 file2 中 column2 中的数字和 file1 中 column1 中的数字合并 file1file2 主要由逗号分隔。在 file2

中我要匹配的数字之间还有一个 . 分隔符

这是文件 1。

1,Mary,24 Fuller Rd
2,Fred,19 St Johns
3,Jonathan,8 Poplar Drive
4,Susan,116 Shepherds Way
5,Michael,4 Nerthern Court

和文件 2

Dawning,Order.5.DHL
Hawkins,Order.3.FedEx
Jacob,Order.2.Yodel
Plateu,Order.4.DPD
Martins,Order.1.Hermes

我的方法是使用 splitfile2 中提取 key 。作为单个文件,这是可行的,但是在处理多个文件时,行为很奇怪,而不是预期的结果。

awk -F, '{{split($2,i,".")}{ print i[2]}' file2
5
3
2
4
1
awk -F, 'NR==FNR{split($2,i,"."); next}{ print i[2]}' file2 file1
1
1
1
1
1

如果我删除 split 但无法提取匹配项,我只会得到预期的结果。

awk -F, 'NR==FNR{array[$2]}END{ for (i in array) print i}' file2 file1
Order.4.DPD
Order.3.FedEx
Order.1.Hermes
Order.5.DHL
Order.2.Yodel

我已经采取了许多其他步骤但都失败了,但这可能会使问题过于臃肿,因此如果需要有关此方面的更多信息,请询问。

我的预期结果是这样的

Mary Martins 24 Fuller Rd
Fred Jacob 19 St Johns
Jonathan Hawkins 8 Poplar Drive
Susan Plateu 116 Shepherds Way
Michael Dawning 4 Nerthern Court

其中 file2 中的 column2 和 file1 中的 column1 基于数字匹配,因此打印 $2$NF来自 file1$1 来自 file2

这是我在众多尝试中失败的一些尝试

awk -F, 'NR==FNR {M=$1; array[$2]; next}{($1 in array)}END{ for (i in array) print $2, M, $NF}' file2 file1
awk -F, 'NR==FNR {M=$1; array[$2]; for (i in array) split(i,a,"."); next} $1==a[2]{print $2,M, $3}' file2 file1
awk -F, 'NR==FNR {M=$1; array[$2]; next}END { for (i in array) split(i,a,".")}($1~a[2]){ print $2,M}' file2 file1

我已经包含了 perl 标记,因为我对使用 perl 的解决方案感兴趣,但如果可能的话,我主要希望使用 awk 来做到这一点.

谢谢。

最佳答案

$ awk -F'[.,]' 'NR==FNR{a[$3]=$1; next} {print $2, a[$1], $3}' file2 FS=, file1
Mary Martins 24 Fuller Road
Fred Jacob 19 St Johns
Jonathan Hawkins 8 Poplar Drive
Susan Plateu 116 Shepherds Way
Michael Dawning 4 Nerthern Court
  • -F'[.,]' 使用 ., 作为 file2
  • NR==FNR{a[$3]=$1; next} 根据第三个字段保存 file2 的第一个字段作为键
  • 参数列表中 file1 之前的
  • FS=, 将字段分隔符更改为 , for file1<
  • print $2, a[$1], $3 打印需要的数据(默认OFS为单空格字符)

关于awk - 使用 awk 合并文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68783038/

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