我有两个文件
file1内容如下
=============================================== ====
OUTPUT1:---------
orange
india
US
xx
OUTPUT2:---------
orange-1
india-1
US-1
xx
=============================================== ====
file2内容如下
OUTPUT1:---------
orange
india
US
xx
OUTPUT2:---------
orange-1
india-1
US-2
xx
=============================================== ====
我想要两个差异如下
-----------------------
OUTPUT1: No evolution
----------------------
OUTPUT2: Evolution found
Before:US-1
After:US-2
----------------------
是否可以使用上述要求在perl中编写脚本
任何帮助将不胜感激
答案 0 :(得分:5)
没有perl,但更棒的是:diff
!
它比较文件:
[blender@arch Desktop]$ diff file1.txt file2.txt
11c11
< US-1
---
> US-2
11c11
表示已更改的文字从第11行开始,即第11个字符。
答案 1 :(得分:1)
Algorithm::Diff应该做的工作。它适用于数组(即你可以解析你喜欢的任何输入格式)并生成类似diff的输出。
然而,可能会发现LCS算法对于任务来说有点过分,你应该选择hash tables。
答案 2 :(得分:0)
可能在Perl中,当然,它是一种非常强大的语言。
我们可以对数据做出的假设会影响难度。它排序了吗?文件有多大。
如果数据未排序且文件太大而无法完全保存在内存中,那么您可能需要采用管道方法,首先排序然后“差异化”,在这种情况下,如果您可以访问Unix遗产工具例如差异和排序你可能甚至不需要Perl。
假设您想使用Perl,我建议分阶段查看问题: