【发布时间】:2015-01-29 23:02:32
【问题描述】:
我可以使用diff 命令找出两个文件相差多少行吗?
我不想要上下文差异,只想要两个文件之间不同的总行数。如果结果只是一个整数,则最好。
【问题讨论】:
我可以使用diff 命令找出两个文件相差多少行吗?
我不想要上下文差异,只想要两个文件之间不同的总行数。如果结果只是一个整数,则最好。
【问题讨论】:
diff 可以完成所有第一部分的工作,但不计算在内; wc -l 完成剩下的工作:
diff -y --suppress-common-lines file1 file2 | wc -l
【讨论】:
是的,您可以,并且以真正的 Linux 方式,您可以使用许多命令一起通过管道执行任务。
首先你需要使用diff命令,来获取文件的差异。
diff file1 file2
这将为您提供更改列表的输出。您感兴趣的是以'>'符号为前缀的行
您使用 grep 工具将这些过滤掉,如下所示
diff file1 file2 | grep "^>"
最后,一旦您获得了您感兴趣的更改列表,您只需在行模式下使用 wc 命令来计算更改的数量。
diff file1 file2 | grep "^>" | wc -l
你有一个完美的例子来说明 Linux 的理念。
【讨论】:
file2添加的行,而不是file1添加的行。第二个问题是,即使用户同时查找< 和 >,它也不会清楚地说明哪些行只是更改了(其中@ 987654328@ 带有| 字符的模型。)
diff file1 file2 | grep -c -e "^<" -e "^>" 在这种情况下,如果您颠倒文件的顺序,您会收到相同的计数。