1

首先,哪个是仅获取两个文件之间差异的最佳和最快的 unix 命令?我尝试使用 diff 来做到这一点(如下)。

我在这里尝试了 Neilvert Noval 给出的答案 - 逐行比较两个文件并在另一个文件中生成差异

代码 -

diff -a --suppress-common-lines -y file1.txt file2.txt >> file3.txt

但是,我在不同的行之前也有很多空格和 > 符号。我该如何解决?我正在考虑删除尾随空格和第一个“>”,但不确定这是否是一个巧妙的修复。

我的 file1.txt 有 -

Hello World!
Its such a nice day!
#this is a newline and not a line of text# 

我的 file1.txt 有 -

Hello World!
Its such a nice day!
Glad to be here!
#this is a newline and not a line of text# 

输出-“#这里有很多空格#>很高兴来到这里:)”

预期输出 -很高兴来到这里:)

4

3 回答 3

4

获得差异的另一种方法是使用 awk:

awk 'FNR==NR{a[$0];next}!($0 in a)' file1 file2

虽然我必须承认我没有运行任何基准测试,也不能说哪个是最快的解决方案。

于 2013-08-05T19:13:28.467 回答
1

diff 选项使其产生“-y并排”差异,这就是您拥有空格的原因。尝试-u 0使用零行上下文的统一格式。那应该打印:

+Glad to be here:)

加号表示已添加该行,而减号表示已删除该行。

于 2013-08-05T19:37:37.973 回答
-1
diff -a --suppress-common-lines -y file1.txt file2.txt|tr 'a >' '' |awk '{print $1}' >>file3.txt 
于 2015-03-11T23:57:09.710 回答