0

我有两个文件,都有很多数据,我需要比较每个文件的第一个单词(每个文件总是以一个数字开头,每个数字可以有很多位)。

当这些数字相同时,文件是相同的。

示例:我有 3 个文件:a.txt、b.txt 和 c.txt

 a.txt content is "1 a b c 3 5 6 hjkj"
 b.txt content is "1 c f a 1234 h"
 c.txt content is "2 a b c 3 5 6 hjkj"

 diff a.txt b.txt should return "files are identical"
 diff a.txt c.txt should return "files are different"

如何使用 diff 命令比较它们?

4

3 回答 3

1

看起来您只想检查文件的第一个“单词”是否匹配。这个 shell 函数应该这样做。

check_first_word(){
  read FIRST GARBAGE < $1
  read SECOND GARBAGE < $2
  [ "$FIRST" == "$SECOND" ] && echo "files are identical" || echo "files are different"
}

用法:

check_first_word file1 file2
于 2013-10-31T21:53:34.760 回答
1

尝试使用awk.

#!/bin/bash

awk 'FNR==1 { if(NR==1) a=$1; else b=$1 } END { if(a==b) print "files are identical"; else print "files are different" }' $1 $2

将上述命令存储在名为的文件中mydiff,赋予可执行权限使用chmod +x,然后您可以执行个性化的差异命令,如下所示

mydiff file1 file2 
于 2013-10-31T21:17:54.133 回答
1

这应该可以完成这项工作,将此功能放在您的 bashrc 文件中。

function mydiff() {
       DIGITS=10
       file_1=`head -c ${DIGITS} $1`
       file_2=`head -c ${DIGITS} $2`

       if [ "$file_1" == "$file_2" ]
         then echo "Files are identical"
       else
         echo "Files are different" 
       fi
}

用法 :

mydiff file_1 file_2
于 2013-10-31T21:19:04.090 回答