是否有一个版本的diff运行
diff a.txt b.txt
并且仅示出了a.txt中不在b.txt中的行或a.txt中的行的修改版本的行。(我正在运行GNU/Linux mint,但我认为这与此无关)
ygya80vv1#
是的
diff --changed-group-format='%>' --unchanged-group-format='' /tmp/a /tmp/b
5kgi1eie2#
如果内容行是独立的,改变它们的排序顺序不会改变它们的含义,你可能希望使用comm而不是diff:diff做了额外的工作,memory-intensive试图构建最短的可能的变化(使用相当复杂的算法),而comm只是在两个输入之间一次比较一行(只有当这些输入被排序时才有可能)。如果您的输入都是预先排序的,这可能看起来像:
comm
diff
# Extremely fast and memory-efficient comm -23 a.txt b.txt
...否则,实时排序:
# Still faster than diff's worst-case, and supports processing content # larger-than-memory, which diff doesn't. comm -23 <(sort <a.txt) <(sort b.txt)
(sort * 确实 * 需要与其输入大小相关的工作空间,但与diff不同的是,它能够将内容从RAM中移到临时文件中,并在RAM不足时通过合并排序将这些文件合并合并)。
sort
2条答案
按热度按时间ygya80vv1#
是的
5kgi1eie2#
如果内容行是独立的,改变它们的排序顺序不会改变它们的含义,你可能希望使用
comm
而不是diff
:diff
做了额外的工作,memory-intensive试图构建最短的可能的变化(使用相当复杂的算法),而comm
只是在两个输入之间一次比较一行(只有当这些输入被排序时才有可能)。如果您的输入都是预先排序的,这可能看起来像:
...否则,实时排序:
(
sort
* 确实 * 需要与其输入大小相关的工作空间,但与diff不同的是,它能够将内容从RAM中移到临时文件中,并在RAM不足时通过合并排序将这些文件合并合并)。