首页 > 解决方案 > 比较两个表并显示第二个表中的选定值

问题描述

我正在尝试匹配两个表上的第三列和第二列。在下面的示例中,我需要从第二个表中获取 PROGRAM 并使用 `AWK. 两个表之间的共同点是 TESTER。

下面是我的代码,不工作。请帮助修复

awk -F, 'NR==FNR{a[$1]=$8;next;}{print $0,a[$3]?a[$2]:"N/A"}' OFS=, table1 table2

Table1:
Date Time   TESTER  Niche   SMS_NO  TEST_AREA   SCREEN_TYPE PROGRAM
4/23/2019   8:40:42 A1  Nxx S11 TA1 ST1 PGM1
4/23/2019   7:34:08 B1  Nx1 S21 TA2 ST2 PGM2
4/23/2019   3:16:24 C1  Nx2 S31 TA3 ST3 PGM3
4/23/2019   6:22:04 D1  Nx3 S41 TA4 ST4 PGM4
4/23/2019   8:55:19 E1  Nx4 S51 TA5 ST5 PGM5
7/22/2018   17:30:37 F1 Nx5 S61 TA6 ST6 PGM6

Table2:
FEATURE TESTER  LICENSE_USED
FEA1    A1  4
FEA2    B1  16
FEA3    C1  16
FEA4    D1  16
FEA5    E1  16
FEA6    F1  16
FEA7    G1  16
FEA8    G2  16

Expected output:
FEATURE TESTER  LICENSE_USED    PROGRAM
FEA1    A1  4   PGM1
FEA2    B1  16  PGM2
FEA3    C1  16  PGM3
FEA4    D1  16  PGM4
FEA5    E1  16  PGM5
FEA6    F1  16  PGM6
FEA7    G1  16  N/A
FEA8    G2  16  N/A

标签: awk

解决方案


请检查:

awk 'NR==FNR {a[$3]=$8; next} {print $0 FS (a[$2]?a[$2]:"N/A")}' file1.txt file2.txt

File1.txt
Date Time   TESTER  Niche   SMS_NO  TEST_AREA   SCREEN_TYPE PROGRAM
4/23/2019   8:40:42 A1  Nxx S11 TA1 ST1 PGM1
4/23/2019   7:34:08 B1  Nx1 S21 TA2 ST2 PGM2
4/23/2019   3:16:24 C1  Nx2 S31 TA3 ST3 PGM3
4/23/2019   6:22:04 D1  Nx3 S41 TA4 ST4 PGM4
4/23/2019   8:55:19 E1  Nx4 S51 TA5 ST5 PGM5
7/22/2018   17:30:37 F1 Nx5 S61 TA6 ST6 PGM6

File2.txt
FEATURE TESTER  LICENSE_USED
FEA1    A1  4
FEA2    B1  16
FEA3    C1  16
FEA4    D1  16
FEA5    E1  16
FEA6    F1  16
FEA7    G1  16
FEA8    G2  16

Output:
FEATURE TESTER  LICENSE_USED PROGRAM
FEA1    A1  4 PGM1
FEA2    B1  16 PGM2
FEA3    C1  16 PGM3
FEA4    D1  16 PGM4
FEA5    E1  16 PGM5
FEA6    F1  16 PGM6
FEA7    G1  16 N/A
FEA8    G2  16 N/A

推荐阅读