首先,哪个是最好和最快的unix命令才能获得两个文件之间的差异?我尝试使用diff来做(下图)。
我尝试了Neilvert Noval在这里给出的答案 - Compare two files line by line and generate the difference in another file
代码 -
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#
输出 - “#Many space here>很高兴来到这里:)”
预期输出很高兴来到这里:)
答案 0 :(得分:4)
获得差异的另一种方法是使用awk:
awk 'FNR==NR{a[$0];next}!($0 in a)' file1 file2
虽然我必须承认我没有运行任何基准,也不能说哪个是最快的解决方案。
答案 1 :(得分:1)
diff的-y
选项使它产生“并排”差异,这就是你有空格的原因。尝试使用零行上下文的统一格式-u 0
。应打印出来:
+Glad to be here:)
加号表示添加了行,而减号表示已删除。
答案 2 :(得分:-1)
diff -a --suppress-common-lines -y file1.txt file2.txt|tr 'a >' '' |awk '{print $1}' >>file3.txt