如何将多列分隔文件与单列文件进行比较并删除“公共”行?

如何将多列分隔文件与单列文件进行比较并删除“公共”行?

我有 2 个文件,一个仅包含一列,另一个包含多个|- 分隔的列。我需要比较文件 1 和文件 2 并删除公共行,然后将它们复制到新文件中。

“公共”行是 的第 7 列file2等于 中的(单个)值的行file1

  • 文件1:
    12345
    89457
    34890
    
  • 文件2:
    GTDtech
    rachel|USA|00|34|ty|ES|12345|789900098|tye
    FLPEN|MAL|90|45|tui|FE|34890|883562748|yu
    ahnat|jap|88|91|hb|kl|24424|784284141|fwfhnw
    

答案1

$ awk -F'|' 'NR==FNR {a[$1]=1; next}; ! ($7 in a)' file1 file2
GTDtech
ahnat|jap|88|91|hb|kl|24424|784284141|fwfhnw

这将读取 file1,并在数组中a为每一行创建一个元素。然后它读入 file2,打印第 7 列所在的任何行不是在数组中a

相关内容