【发布时间】:2018-04-19 05:08:10
【问题描述】:
此代码已损坏。我知道它效率低下两次运行类似的代码来获得输出,但我不擅长 AWK。
在第一次运行中,将 file1 的 $1 和 $2 与 file2 中的 $1 和 $2 进行匹配。当有匹配时,将 file1 的 $3 插入到 file1 的 $2 中。
在第二次运行中,将 file1 的 $1 和 $2 与“部分输出”中的 $4 和 $5 进行匹配。当有匹配时,将 file1 的 $3 插入到“部分文件”的 $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
文件1
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
【问题讨论】:
标签: awk