繁体   English   中英

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

[英]How do I compare two text files while ignoring fields that change from one instance to the next?

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

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

有没有更好的工具来解决这个问题? 可以用一些 bash fu 来做这个吗?

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

保罗

您可以为此使用进程替换,传递一些其他命令的输出来代替文件本身。 例子:

$ 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命令只是删除冒号后的任何数字 - 您需要想出一个适合您的输入数据的命令,它会去除您的时间戳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM