一个class轮发现两个文件的第一行是否相同

是否有一个简单的使用头和cmp(或其他)来实现这一目标?

您可以使用diffhead内部进程replace的退出状态:

 [kbrandt@localhost ~]$ echo arf > foo [kbrandt@localhost ~]$ echo arf > foo1 [kbrandt@localhost ~]$ diff <(head -n1 foo) <(head -n1 foo1) [kbrandt@localhost ~]$ echo $? 0 [kbrandt@localhost ~]$ echo foo > foo1 [kbrandt@localhost ~]$ diff <(head -n1 foo) <(head -n1 foo1) 1c1 < arf --- > foo [kbrandt@localhost ~]$ echo $? 1 [kbrandt@localhost ~]$ 

如果退出状态为零,则文件比较文件匹配。 非零意味着它们不匹配,或者运行diff的错误似乎不太可能。 $? 是一个具有上一个命令的退出状态的shellvariables。 如果你不想在屏幕上看到它,你可以通过在diff命令的末尾添加> /dev/null来redirectdiff的输出:

 [kbrandt@localhost ~]$ diff <(head -n1 foo) <(head -n1 foo1) > /dev/null [kbrandt@localhost ~]$ echo $? 1 

这里有一个方法可以在Bash中完成,而不需要对外部实用程序进行三次调用。 它也适用于没有进程replace的POSIX shell:

 read a<file1; read b<file2; [ "$a" = "$b" ]; echo $? 

这是使用AWK的另一种方法:

 awk 'FNR==1{a[NR]=$0; if (NR==2) exit a[1]!=a[2]; nextfile}' file1 file2 

请注意,AWK比较返回1为真,所以我使用!=所以shell得到一个0它认为是真实的。