给定两个文件,我想比较数据并通过在Perl中使用散列来打印匹配的行

时间:2014-07-08 06:22:27

标签: perl

假设我有两个文件: 文件1:

a aa
a bb
b vv
c nn
c nn

文件2:

a +
b -
c +

输出应该是:

 a aa : +
 a bb : +
 b vv : -
 c nn : +
 c nn : +

2 个答案:

答案 0 :(得分:1)

首先阅读file2并将键/值对提供给%h哈希。之后阅读file1并在%h哈希的行尾添加符号,

perl -lane'
  BEGIN { $x=shift; %h = map +split, <>; @ARGV=$x }
  print $_, " : ", $h{$F[0]}
' file1 file2

输出

a aa : +
a bb : +
b vv : -
c nn : +
c nn : +

答案 1 :(得分:1)

不需要Perl,只需使用join(1)

$ join file1 file2
a aa +
a bb +
a cc +
b vv -
c nn +
c nn +

如果你真的需要冒号,请使用awk左右添加它。