首先,哪个是最好的,最快的UNIX命令,以获得两个文件之间的差异? 我尝试使用差异来做到这一点(下文)。
我尝试了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#
输出 – “#很多空间在这里#>很高兴在这里:)”
预期产出 –很高兴在这里:)
另一种获得差异的方法是使用awk:
awk 'FNR==NR{a[$0];next}!($0 in a)' file1 file2
虽然我必须承认,我没有运行任何基准,也不能说哪个是最快的解决方案。
diff的-y
选项使得它产生一个“并排”的差异,这就是为什么你有空间。 尝试-u 0
为统一格式,上下文为零行。 这应该打印:
+Glad to be here:)
加号表示该行被添加,而减号意味着被删除。
diff -a --suppress-common-lines -y file1.txt file2.txt|tr 'a >' '' |awk '{print $1}' >>file3.txt