有人可以帮助比较两个文件, 我使用了以下命令,但我无法成功,
awk -F,'NR == FNR {a [$ 1,$ 2];下一个}(($ 1,$ 2)a)'temp1.dat temp2.dat
这是我的需要, 需要比较以下两个dat文件中的前两个字段,并按照预期在file3中合并结果(第一个字段,第二个字段,temp1.dat的3个字段,temp2.dat的3个字段)
File1中:temp1.dat
A, AB,100
B,BB,200
C,CC,300
文件2:temp2.dat
A,AB,10
C,CC,30
D,DF, 4
File3:输出
A, AB,100,10
C,CC,300,30
答案 0 :(得分:3)
awk -F, 'BEGIN{OFS=","}FNR==NR{a[$1$2]=$3;next}($1$2 in a && $3=$3","a[$1$2])' file2 file1
测试如下:
> cat file1
A,AB,100
B,BB,200
C,CC,300
> cat file2
A,AB,10
C,CC,30
D,DF,4
> awk -F, 'BEGIN{OFS=","}FNR==NR{a[$1$2]=$3;next}($1$2 in a && $3=$3","a[$1$2])' file2 file1
A,AB,100,10
C,CC,300,30
>
FNR==NR{a[$1$2]=$3;next}
适用于第一个文件 file2 FNR==NR
执行代码块。$1$2
,值为$3
。($1$2 in a && $3=$3","a[$1$2])
这将执行FNR!=NR
。其中检查索引$ 1 $ 2作为数组中的索引存在,然后第二个条件是将file1的第3个字段更改为$3=$3","a[$1$2]
所以现在$0
包含公共($1$2
)行改变了第3个字段。也必须为四个文件编写类似的逻辑。
答案 1 :(得分:1)
尝试:
awk -F, '{i=$1 SUBSEP $2} NR==FNR{A[i]=$3; next} i in A{print $0,A[i]}' file2 file1