我已按照此问题perl compare two file and print the matching lines找到了使用哈希值在两个文件之间匹配或不匹配的行。
但是我发现哈希重新排列了线条,我希望线条按顺序排列。我可以编写多个for循环来按顺序获得结果,但这不如hash有效。有没有人以前遇到过这个问题,可以帮助解决他们的问题
答案 0 :(得分:2)
也许不完全理解这个问题,但
fgrep -xf file2 file1
还不够?
或
fgrep -xf file1 file2
是的,它不是perl
,而是简短而快速......
答案 1 :(得分:1)
这可以通过两个步骤有效地完成。假设您已经能够找到“匹配的行”,但它们的顺序错误;然后一个简单的grep
可以重新组织它们。假设您有一个脚本matchThem
,它接受两个输入(file1
和file2
)并将它们输出到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。