【问题标题】:Matching two files匹配两个文件
【发布时间】:2017-12-23 03:29:38
【问题描述】:

我想在 Linux 上的两个文件之间进行匹配

我有两个文件:

File1(3 个字段,以| 分隔)

M000990520|CAMPOS HORMAZA MIGUEL | 1,725.30
M000990521|MATEO MIGUEL ZENON | 1,143.86
M000990522|HAITI MIRAFLORES | 1,054.81
M000990523|MESIAS FIBIA ELESCANO DE | 826.33
M000990525|DISTRIBUIDORA LUZA S R LTDA DILU | 985.87
M000990526|ZARATE DAVILA GREGORIO | 1,513.10

和file2(1个字段):

M000990521
M000990523
M010990521
M002990523
M004990521
M004990523

我需要匹配并得到这个:

M000990521|MATEO MIGUEL ZENON | 1,143.86
M000990523|MESIAS FIBIA ELESCANO DE | 826.33

我试过这个 awk 命令:

awk 'FNR==NR{a[$1];next}($1 in a){print}' file1 file2

【问题讨论】:

  • awk ... file2 file1 应该这样做。
  • 这个问题已经在这个论坛上被问过数千次了......

标签: linux awk


【解决方案1】:
awk -F'|' 'NR==FNR{A[$1];next}$1 in A' file2 file1

M000990521|MATEO MIGUEL ZENON | 1,143.86
M000990523|MESIAS FIBIA ELESCANO DE | 826.33

grep -wFf file2 file1

M000990521|MATEO MIGUEL ZENON | 1,143.86
M000990523|MESIAS FIBIA ELESCANO DE | 826.33

awk -F'|' 'NR==FNR{c[$1]++;next};c[$1] > 0' file2.txt file1.txt

M000990521|MATEO MIGUEL ZENON | 1,143.86
M000990523|MESIAS FIBIA ELESCANO DE | 826.33

cut -d'|' -f 1 file2.txt | while read pat; do grep "^$pat" file1.txt; done

M000990521|MATEO MIGUEL ZENON | 1,143.86
M000990523|MESIAS FIBIA ELESCANO DE | 826.33

【讨论】:

  • 非常感谢!但是我已经执行了它,它不起作用 [usrpcd@gppesvlcoc0013 ~]$ grep -wFf pru.txt pruebatup.TXTMX01 [usrpcd@gppesvlcoc0013 ~]$ grep -wFf pruebatup.TXTMX01 pru.txt [usrpcd@gppesvlcoc0013 ~]$ [ usrpcd@gppesvlcoc0013 ~]$ [usrpcd@gppesvlcoc0013 ~]$ [usrpcd@gppesvlcoc0013 ~]$ [usrpcd@gppesvlcoc0013 ~]$ awk -F'|' 'NR==FNR{A[$1];next}$1 in A' pru.txt pruebatup.TXTMX01 [usrpcd@gppesvlcoc0013 ~]$ awk -F'|' 'NR==FNR{A[$1];next}$1 in A' pruebatup.TXTMX01 pru.txt
  • 你的OS是什么
  • [usrpcd@gppesvlcoc0013 ~]$ uname Linux [usrpcd@gppesvlcoc0013 ~]$ cat /etc/issue \S Kernel \r on an \m Initial login with linux:lgQ$j$3kM跨度>
  • 尝试which awk 获取awk 版本或尝试使用dod2unixtr -d '\r' <input >output 从输入中删除行尾。您是否收到任何错误消息,我使用了 ubuntu 14.04cygwin 并且所有 4 个命令都有效。
猜你喜欢
  • 2013-07-10
  • 2018-07-12
  • 1970-01-01
  • 2011-11-24
  • 2020-06-11
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多