0

我已经按照这个问题perl 比较两个文件并打印匹配的行,并使用哈希找到两个文件之间匹配或不匹配的行。

但是我发现散列重新排列了行,我希望这些行按顺序排列。我可以编写多个 for 循环来按顺序获取结果,但这不如哈希有效。有没有人遇到过这个问题,可以请帮助他们的解决方案

4

3 回答 3

2

也许不完全理解这个问题,但是

fgrep -xf file2 file1

是不足够的?

或者

fgrep -xf file1 file2

是的,不是perl但是,简单快速......

于 2013-07-10T21:58:20.917 回答
1

如果你想要一个保持插入顺序的哈希,那么试试 CPAN 模块Tie::IxHash

于 2013-07-11T07:45:57.013 回答
1

这可以通过两个步骤有效地完成。假设您已经能够找到“匹配的行”,但它们的顺序错误;然后一个简单的grep可以重新组织它们。假设您有一个脚本matchThem,它接受两个输入 (file1file2) 并将它们输出到tempFile,那么整个脚本将是:

matchThem file1 file2 > tempFile
grep -Fx -f tempFile file1

-Fx国旗的意思:

-F : find exact match only (much faster than wildcards)
-x : only match whole lines
于 2013-07-10T21:53:53.617 回答