繁体   English   中英

在匹配后使用特定列合并两个不同的文件,并在不匹配时添加 N/A

[英]Merge two different files using specific columns after a match and add N/A when no match

文件 1

Time        C-ID        Room            Info        N_Range ErrorCodes  Stability   Position    Profile Configuration   N-East  EAST    North
10:29:18    13832216    1Tr1Tr1Tr10     VILNARPN    AIN         6       STABLE      default     1600    8               LINK    R8      1
10:29:18    1498684     1Tr1Tr1Tr11     VILNARPN    UAN         6       STABLE      default     1600    5030            LINK    R8      1
10:29:18    1498684     1Tr1Tr1Tr12     VILNARPN    AN          6       STABLE      default     1600    5030            LINK    R8      1
10:29:18    2492427     1Tr1Tr1Tr13     VILNARPN    AN          7       STABLE      default     1600    5030            LINK    R8      1
10:29:18    1002527     1Tr1Tr1Tr14     TDAT00      AN          6       STABLE      default     1600    8               LINK    R8      1
10:29:18    1002527     1Tr1Tr1Tr15     TDAT00      UAN         6       STABLE      default     1600    8               LINK    R8      1
10:29:18                1Tr1Tr1Tr18     TDAT00      AN          5       STABLE      default     1600    8               LINK    R8      1
10:29:18    1569109     1Tr1Tr1Tr19     RTEDLOJ0    AIN         6       STABLE      default     1600    8               LINK    R8      1

文件 2

Number          Action      Time      Repeat    Oas  Restriction    Status      Priority
AA_B_43645175   REBUILD     15:29:18    2       OAS     NONE        PENDING     HIGH
AA_B_43652334   REBUILD     10:29:18    0       OAS     NONE        PENDING     LOW
AA_B_43652684   REBUILD     10:29:18    1       OAS     NONE        PENDING     LOW
AA_B_43653840   CHANGED     13:29:18    0       OAS     NONE        PENDING     MEDIUM
AA_B_43667706   REBUILD     10:29:18    2       OAS     NONE        PENDING     LOW
AA_B_43723080   REBUILD     10:29:18    4       OAS     NONE        PENDING     LOW
AA_B_43747934   CHANGED     10:29:18    1       OAS     NONE        PENDING     MEDIUM
AA_B_43766744   REBUILD     10:29:18    0       OAS     NONE        PENDING     LOW
AA_B_43908075   REBUILD     11:29:18    1       OAS     NONE        PENDING     LOW
AA_B_43963533   REBUILD     12:29:18    0       OAS     NONE        PENDING     HIGH
AA_B_43964358   NEW         13:29:18    3       OAS     NONE        PENDING     LOW
AA_B_43964533   REBUILD     14:29:18    0       OAS     NONE        PENDING     MEDIUM
AA_B_43964678   NEW         15:29:18    0       OAS     NONE        PENDING     LOW

如果 File1 的第一列与 File2 的第三列匹配,则打印:

  • File1 中的列:2、3、6 和 7
  • File2 中的列:7 和 8
  • 不匹配时标记 N/A

我试过了

awk 'NR==FNR{a[$1,$3];next}{print $2,$3,$6,$7,$2,$3a[$1]?a[$1]:"NA"}'

它甚至没有参加比赛

所以我尝试了

awk -F 'NR==FNR{a[$1,$3];next} ($7,$8) in a' {print $2,$3,$6,$7,$2,$3a[$1]?a[$1]:"NA"}'

但它没有工作一切都被标记为 N/A

所需 Output

C-ID     Room        ErrorCodes     Stability   Status     Priority
1569109  1Tr1Tr1Tr19     6           STABLE     PENDING    LOW
1569109  1Tr1Tr1Tr19     6           STABLE     PENDING    LOW
1569109  1Tr1Tr1Tr19     6           STABLE     PENDING    LOW
1569109  1Tr1Tr1Tr19     6           STABLE     PENDING    LOW
1569109  1Tr1Tr1Tr19     6           STABLE     PENDING    MEDIUM
1569109  1Tr1Tr1Tr19     6           STABLE     PENDING    LOW

将 File2 放在一个数组中,并在其上运行 File1 中的每一行

#!/usr/bin/awk -f
# syntax ./merge-all.awk File2 File1

BEGIN {
  FS=","
  OFS=","
  lineCount=0
}

# Put File2 records into an array
FNR == NR {
  entries[lineCount, "time"]=$3
  entries[lineCount]=$7 OFS $8
  lineCount+=1
  next
}

# Print headers
FNR == 1 {
  print $2, $3, $6, $7, entries[0]
  next
}

# Print a record for each record in File2 while handling each File1 record
{
  matchFound=0
  for (i=1; i < lineCount; i++) {
    if (entries[i, "time"] == $1) {
      print $2, $3, $6, $7, entries[i]
    } else {
      print $2, $3, $6, $7, "N/A", "N/A"
    }
  }
}

这里是这个命令的 output:

$ ./merge-all.awk File2 File1 | tr ',' ' ' | column -t
C-ID      Room         ErrorCodes  Stability  Status   Priority
13832216  1Tr1Tr1Tr10  6           STABLE     N/A      N/A
13832216  1Tr1Tr1Tr10  6           STABLE     PENDING  LOW
13832216  1Tr1Tr1Tr10  6           STABLE     PENDING  LOW
13832216  1Tr1Tr1Tr10  6           STABLE     N/A      N/A
13832216  1Tr1Tr1Tr10  6           STABLE     PENDING  LOW
13832216  1Tr1Tr1Tr10  6           STABLE     PENDING  LOW
13832216  1Tr1Tr1Tr10  6           STABLE     PENDING  MEDIUM
13832216  1Tr1Tr1Tr10  6           STABLE     PENDING  LOW
13832216  1Tr1Tr1Tr10  6           STABLE     N/A      N/A
13832216  1Tr1Tr1Tr10  6           STABLE     N/A      N/A
13832216  1Tr1Tr1Tr10  6           STABLE     N/A      N/A
13832216  1Tr1Tr1Tr10  6           STABLE     N/A      N/A
13832216  1Tr1Tr1Tr10  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr11  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr11  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr11  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr11  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr11  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr11  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr11  6           STABLE     PENDING  MEDIUM
1498684   1Tr1Tr1Tr11  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr11  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr11  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr11  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr11  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr11  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr12  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr12  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr12  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr12  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr12  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr12  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr12  6           STABLE     PENDING  MEDIUM
1498684   1Tr1Tr1Tr12  6           STABLE     PENDING  LOW
1498684   1Tr1Tr1Tr12  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr12  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr12  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr12  6           STABLE     N/A      N/A
1498684   1Tr1Tr1Tr12  6           STABLE     N/A      N/A
2492427   1Tr1Tr1Tr13  7           STABLE     N/A      N/A
2492427   1Tr1Tr1Tr13  7           STABLE     PENDING  LOW
2492427   1Tr1Tr1Tr13  7           STABLE     PENDING  LOW
2492427   1Tr1Tr1Tr13  7           STABLE     N/A      N/A
2492427   1Tr1Tr1Tr13  7           STABLE     PENDING  LOW
2492427   1Tr1Tr1Tr13  7           STABLE     PENDING  LOW
2492427   1Tr1Tr1Tr13  7           STABLE     PENDING  MEDIUM
2492427   1Tr1Tr1Tr13  7           STABLE     PENDING  LOW
2492427   1Tr1Tr1Tr13  7           STABLE     N/A      N/A
2492427   1Tr1Tr1Tr13  7           STABLE     N/A      N/A
2492427   1Tr1Tr1Tr13  7           STABLE     N/A      N/A
2492427   1Tr1Tr1Tr13  7           STABLE     N/A      N/A
2492427   1Tr1Tr1Tr13  7           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr14  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr14  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr14  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr14  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr14  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr14  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr14  6           STABLE     PENDING  MEDIUM
1002527   1Tr1Tr1Tr14  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr14  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr14  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr14  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr14  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr14  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr15  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr15  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr15  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr15  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr15  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr15  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr15  6           STABLE     PENDING  MEDIUM
1002527   1Tr1Tr1Tr15  6           STABLE     PENDING  LOW
1002527   1Tr1Tr1Tr15  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr15  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr15  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr15  6           STABLE     N/A      N/A
1002527   1Tr1Tr1Tr15  6           STABLE     N/A      N/A
null      1Tr1Tr1Tr18  5           STABLE     N/A      N/A
null      1Tr1Tr1Tr18  5           STABLE     PENDING  LOW
null      1Tr1Tr1Tr18  5           STABLE     PENDING  LOW
null      1Tr1Tr1Tr18  5           STABLE     N/A      N/A
null      1Tr1Tr1Tr18  5           STABLE     PENDING  LOW
null      1Tr1Tr1Tr18  5           STABLE     PENDING  LOW
null      1Tr1Tr1Tr18  5           STABLE     PENDING  MEDIUM
null      1Tr1Tr1Tr18  5           STABLE     PENDING  LOW
null      1Tr1Tr1Tr18  5           STABLE     N/A      N/A
null      1Tr1Tr1Tr18  5           STABLE     N/A      N/A
null      1Tr1Tr1Tr18  5           STABLE     N/A      N/A
null      1Tr1Tr1Tr18  5           STABLE     N/A      N/A
null      1Tr1Tr1Tr18  5           STABLE     N/A      N/A
1569109   1Tr1Tr1Tr19  6           STABLE     N/A      N/A
1569109   1Tr1Tr1Tr19  6           STABLE     PENDING  LOW
1569109   1Tr1Tr1Tr19  6           STABLE     PENDING  LOW
1569109   1Tr1Tr1Tr19  6           STABLE     N/A      N/A
1569109   1Tr1Tr1Tr19  6           STABLE     PENDING  LOW
1569109   1Tr1Tr1Tr19  6           STABLE     PENDING  LOW
1569109   1Tr1Tr1Tr19  6           STABLE     PENDING  MEDIUM
1569109   1Tr1Tr1Tr19  6           STABLE     PENDING  LOW
1569109   1Tr1Tr1Tr19  6           STABLE     N/A      N/A
1569109   1Tr1Tr1Tr19  6           STABLE     N/A      N/A
1569109   1Tr1Tr1Tr19  6           STABLE     N/A      N/A
1569109   1Tr1Tr1Tr19  6           STABLE     N/A      N/A
1569109   1Tr1Tr1Tr19  6           STABLE     N/A      N/A

请注意,我在缺少C-ID的数据集中添加了字符串"null" ,因为没有任何值awk将向左移动所有列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM