我有两个文件,其中包含来自两个硬盘驱动器的所有文件路径列表(应该完全相同),我认为其中一个文件丢失了。两个列表都有文件路径和大小,但列表的顺序不同(请参见下面的示例)。
有没有一个命令可以比较两个文件之间的差异并将差异输出到一个新文件?
例子:
文件 1:
/docs/red
/docs/blue
/docs/yellow
/docs/green
Run Code Online (Sandbox Code Playgroud)
文件_2:
/docs/blue
/docs/green
/docs/red
Run Code Online (Sandbox Code Playgroud)
差异_文件:
/docs/yellow
Run Code Online (Sandbox Code Playgroud)
使用grep而不需要对它们进行排序:
grep -Fxvf file2 file1 > diff_file
Run Code Online (Sandbox Code Playgroud)
将返回在file1但不在file2 中的行(在file2 中丢失的行)。
小智 6
我会尝试使用排序和差异:
$ diff <(sort csv1.txt) <(sort csv2.txt)
4d3
<
8d6
< /docs/yellow
Run Code Online (Sandbox Code Playgroud)
我通常使用 meld(这是一个非常有用的视觉差异工具)进行此类比较。
安装融合:
sudo apt-get install meld
Run Code Online (Sandbox Code Playgroud)
排序,然后比较:
sort csv1.txt > csv1-sorted.txt
sort csv2.txt > csv2-sorted.txt
meld csv1-sorted.txt csv2-sorted.txt
Run Code Online (Sandbox Code Playgroud)