Perl脚本比较两个文件但按顺序打印

时间:2013-07-10 21:47:25

标签: perl hash

我已按照此问题perl compare two file and print the matching lines找到了使用哈希值在两个文件之间匹配或不匹配的行。

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

3 个答案:

答案 0 :(得分:2)

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

fgrep -xf file2 file1

还不够?

fgrep -xf file1 file2

是的,它不是perl,而是简短而快速......

答案 1 :(得分: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

答案 2 :(得分:1)

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