比较数字并收集详细信息并将输出提供到新文件

比较数字并收集详细信息并将输出提供到新文件

文件1包含许多数字,如下所示:

345656565465
783329439432
345656565465
783329439432
.......

文件2

345656565465;ram;dfdfdf54532fdf;...............................
783329439432;sam;dfsdgg543546fg;...............................
768737228732;bheem;dfsdg5465464767g;...........................
34565656546575;hema;jsdsds45345455h;..........................

期望的输出:文件1应该搜索地图文件2并放入文件3(输出)像这样:

345656565465;ram;dfdfdf54532fdf;...............................
783329439432;sam;dfsdgg543546fg;...............................

到目前为止,我已经尝试过:

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

还尝试使用 perl 但我不确定这是否正确,因为它没有给我想要的输出:

perl -e 'open(A, "file2"); while(<A>){/.+?\|[^|]+/ && $k{$&}++};
while(<>){/.+?\|[^|]+/ && do{print if defined($k{$&})}}' file1

我面临的问题是它应该只 grep 该数字,但在我的代码中它采用包含相同模式的大数字,并且应该粘贴到第三个文件中。请帮助我实现这一目标:)

答案1

你快成功了

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

在哪里

  • -F';'使用分号作为分隔符(而不是管道)
  • 使用file1第一个来捕获数字
  • 我想您想选择第一列。

相关内容