我有纯文本大学成绩单...这些是使用固定宽度的字体并且有ascii列等等。如果对生成它们的程序的更改引入了缺陷,我很难在视觉上注意到,我的眼睛茫然。但是,每次生成相同的文档时,其中的时间戳都会发生变化。有没有办法强制差异(或类似的工具)忽略特定的行,甚至是该行中特定范围的字符?
如果我使用-I“regexp”开关,这将忽略整行的差异,即使我只想忽略对日期的更改。
有更好的工具吗?可以用一些bash fu来做这个吗?
答案 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
命令只是删除冒号后的任何数字 - 您需要提供适合您的输入数据的命令,这将删除您的时间戳。