如何比较两个文本文件,同时忽略从一个实例更改为下一个实例的字段?

时间:2014-04-23 16:02:58

标签: linux bash diff

我有纯文本大学成绩单...这些是使用固定宽度的字体并且有ascii列等等。如果对生成它们的程序的更改引入了缺陷,我很难在视觉上注意到,我的眼睛茫然。但是,每次生成相同的文档时,其中的时间戳都会发生变化。有没有办法强制差异(或类似的工具)忽略特定的行,甚至是该行中特定范围的字符?

如果我使用-I“regexp”开关,这将忽略整行的差异,即使我只想忽略对日期的更改。

有更好的工具吗?可以用一些bash fu来做这个吗?

2 个答案:

答案 0 :(得分:1)

查看他的网页,也许它会做你想要的。 http://ifdeflinux.blogspot.com/2011/08/diff-two-files-ignoring-certain-fields.html

答案 1 :(得分:1)

您可以使用process substitution来传递一些其他命令的输出来代替文件本身。例如:

$ diff file1 file2
2c2
< example: 123
---
> example: 456

$ diff <(sed -r 's/(.*: )[0-9]+/\1/' file1) <(sed -r 's/(.*: )[0-9]+/\1/' file2)
[files are the same]

在示例中,sed命令只是删除冒号后的任何数字 - 您需要提供适合您的输入数据的命令,这将删除您的时间戳。