比较两个表并显示从第二个表中选择的值

时间:2019-04-23 02:58:38

标签: awk

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

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

awk -F,'NR == FNR {a [$ 1] = $ 8; next;} {print $ 0,a [$ 3]?a [$ 2]:“ N / A”}'OFS =,表1 table2 < / p>

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

2 个答案:

答案 0 :(得分:1)

请检查以下内容:

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

答案 1 :(得分:0)

在gnu awk上尝试

awk 'NR==FNR{a[$3]=$8;next} {$4=a[$2];if($4=="") $4="N/A";print}' Table1 Table2