【问题标题】:how can I stop diff when one file has ended?一个文件结束时如何停止差异?
【发布时间】:2013-07-07 22:45:36
【问题描述】:

我正在比较 2 个长度不同的文件,但我不想在较短的文件结束后看到较长文件的输出。 虽然我确实需要在较短的文件结束之前知道任一文件上是否缺少行。

我不必使用 diff,我可能会使用 python 来做到这一点,有没有简单的方法在 python 上做同样的事情?

【问题讨论】:

  • 如何使用wc -l 获取行数,并将其传递给head -n 以仅输出这么多行。然后通过管道将其发送到diff
  • 只有当差异出现在第 n 行之前才有效,这并不总是保证
  • 您能否详细介绍一下您需要解决此问题的背景?
  • 那么,你想比较什么?第 1 行与第 1 行和第 2 行与第 2 行,还是其他?
  • @pocketfullofcheese 我有一个生成输入数据日志的系统,我可以将该数据重播到系统并获取新日志。我想比较这两个日志,看看每次原始日志可以包含 19,000,000 行时,系统的工作方式都是一样的!!所以我不想重播所有日志,我会在一段时间后停止重播。

标签: python linux diff


【解决方案1】:

看看这个解决方案是否适合你:

dhruvpathak@dhruvpathak:~$ cat shortfile
this is a
short file
created
for example
dhruvpathak@dhruvpathak:~$ cat longfile
this is a
long file
created
for example.
but also contains
some extra text
which needs to be
ignored when
the small file 
ends.

dhruvpathak@dhruvpathak:~$ cat shortfile > /tmp/a && echo "*****ENDMARKER*****" >> /tmp/a && cat longfile > /tmp/b && diff /tmp/a /tmp/b | grep -B 100000 "*****ENDMARKER*****"
2c2
< short file
---
> long file
4,5c4,10
< for example
< *****ENDMARKER*****

【讨论】:

  • thanx 但这对短文件很有用,我的文件对于原始文件最多可以达到 20M 行,因此执行时间会太长
猜你喜欢
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多