比较两个文件的列之间的一定行数

比较两个文件的列之间的一定行数

我有一千个文件,我需要验证它们在第二列中是否都具有完全相同的信息(最多一定行数)。下面是一个例子。如果文件 file1.txt 和 file2.txt 第二列的前 5 行不相等,我想打印文件的名称。在这种情况下,结果应显示:“文件 file1.txt 和 file2.txt 之间的差异”

文件1.txt

jose     50
maria    50
fernando 50
andres   50
martin   30
pablo    30
.
.
.

文件2.txt

julia    50
julio    50
alan     50
ruth     50
ana      40
manuel   40
.
.
.                    

答案1

唔。我想我会对文件进行 for 循环,然后与comm.

/tmp ❯ comm -3 <(cat file1.txt|awk '{print $2}') <(cat file2.txt|awk '{print $2}')                                    ⏎
30
30
    40
    40

请注意,30 和 40 是从文件中输出的。的一些基本用法commcomm -1 -3 <(sort -u FILE1.txt) <(sort -u FILE2.txt)

  • -1 抑制 FILE1 特有的行
  • -2 抑制 FILE2 特有的行
  • -3 抑制出现在两个文件中的行

因此,将所有这些放在一起,例如:

cd /path/to/files && find . -type f -name "*.txt" | while read filename
do
   echo "*** Checking $filename ***"; comm -3 <(cat reference.txt|awk '{print $2}') <(cat $filename|awk '{print $2}'); echo "";
done

相关内容