此代码已损坏。我知道它的低效运行两次类似的代码来获得输出,但我对AWK并不擅长。
在第一次运行中,将$ 1和$ 2的file1与$ 1和$ 2匹配。当匹配时,将file1的$ 3插入到$ 1的file1中。
在第二次运行中,将$ 1和$ 2的file1与$ 4和$ 5的“部分输出”匹配。当匹配时,将$ 3的file1插入$ 6的“部分文件”中。
awk 'BEGIN {FS=OFS="\t"}
NR == FNR { values[$1 FS $2] = $3; next }
($1 FS $2) in values { $3 = values[$1 FS $2]}1' file2 file1 >> partial-output
awk 'BEGIN {FS=OFS="\t"}
NR == FNR { values[$4 FS $5] = $6; next }
($1 FS $2) in values { $6 = values[$4 FS $5]}1' partial-output file1
File1中
NODE1 INT1 10
NODE1 INT2 20
NODE2 INT1 10
NODE2 INT2 20
NODE3 INT1 10
NODE3 INT2 20
NODE4 INT1 10
NODE4 INT2 20
文件2
NODE1 INT1 NODE2 INT1
NODE3 INT1 NODE4 INT1
NODE1 INT2 NODE3 INT2
NODE2 INT2 NODE4 INT2
部分输出
NODE1 INT1 10 NODE2 INT1
NODE3 INT1 10 NODE4 INT1
NODE1 INT2 20 NODE3 INT2
NODE2 INT2 20 NODE4 INT2
最终输出
NODE1 INT1 10 NODE2 INT1 10
NODE3 INT1 10 NODE4 INT1 10
NODE1 INT2 20 NODE3 INT2 20
NODE2 INT2 20 NODE4 INT2 20
答案 0 :(得分:1)
你需要这个吗?
awk '
BEGIN {FS = OFS = "\t"}
NR == FNR {v[$1,$2] = $3; next}
{print $1, $2, v[$1,$2], $3, $4, v[$3,$4]}
' file1 file2