如何比较应用于两个不同文件的“head”命令的输出?

如何比较应用于两个不同文件的“head”命令的输出?

我想比较head应用于两个单独文件的命令的输出:

diff <(head -n 1 file1.csv) <(head -n 1 file2.csv)

我从类似的问题中得到了命令的结构:如何比较两个命令的输出差异?

但所发生的只是打印了每个文件的顶行。所以我不确定它是否有差异。我读的输出正确吗?

如何比较head应用于两个不同文件的命令的输出差异?

答案1

diff仅用于打印不同的行。打印出这些行意味着它们是不同的。以这两行为例:

# lines different, have output
$ diff <(head -n 1 /etc/passwd) <(head -n1 input.txt)
1c1
< root:x:0:0:root:/root:/bin/bash
---
> hello world
# same file, first lines aren't different, no output
$ diff <(head -n 1 /etc/passwd) <(head -n1 passwd.copy)
$

请注意,即使最轻微的变化也应该被检测到diff,例如,如果我在passwd.copy那两行中添加一个尾随空格,那么前两行就不再相同了,即使乍一看它们看起来如此:

$ diff <(head -n 1 /etc/passwd) <(head -n1 passwd.copy)
1c1
< root:x:0:0:root:/root:/bin/bash
---
> root:x:0:0:root:/root:/bin/bash 

也可以看看理解 diff 输出

答案2

如果 的输出diff不够清晰,请考虑使用更高级的工具,例如 meld 或我个人的选择:vimdiff。使用类似 @Sergiy 的示例,这是 Vimdiff 向我展示的内容:

在此处输入图片描述

可以看出,多余的空格被突出显示了。可以使用以下方法获得更高级的 diff 突出显示DiffChar 插件(请参阅我的帖子Vi 和 Vim SE例如)。

相关内容