【问题标题】:Compare two tables and display selected value from 2nd table比较两个表并显示第二个表中的选定值
【发布时间】:2019-09-12 04:38:50
【问题描述】:

我正在尝试匹配两张桌子上的第 3 列和第 2 列。在下面的示例中,我需要从第二个表中获取 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

【问题讨论】:

  • 你的FS是逗号还是空格?您的代码和示例输入和输出显示不同的值。
  • 嗨@acs005 FS 是','我刚刚粘贴在xls 中,所以它删除了','。两个表之间的共同点是 TESTER,我想从 table1 中获取使用的 PROGRAM 并显示 table2 的内容 + 使用的程序

标签: awk


【解决方案1】:

在 gnu awk 上试过

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

【讨论】:

    【解决方案2】:

    请检查:

    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
    

    【讨论】:

    • 我相信你会改变 FS。我认为它是空间并提供了解决方案,因为更改 FS 是一件容易的事。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    相关资源
    最近更新 更多