比较 2 个文本文件 unix shell 脚本

Compare 2 text files unix shell script

我有 2 个以下格式的文本文件

field1                         : test1
field2                         : test2
field3                         : test3
field4                         : test4

和文件 2 为:--

 field1 : test1
 field2 : test2
 field3 : test3
 field4 : test4

我正在尝试比较文件并输出 "All records Matched" 如果一切都匹配,如果不匹配则 "Data Mismatch for field name "

我尝试使用 diff 通过忽略白色来进行基本匹配 space 但它没有发生。

diff -byw 1.txt 2.txt

有人可以帮助我吗?

此致。

您不匹配,因为在第二个文件的每行开头有 space。使用 sed

删除 space
 sed -i 's/^ *//' 2.txt

现在使用 diff -b 进行比较,它会正常工作。

在shell中,您可以使用$?查看上一条命令的输出状态。 $? 如果最后一个命令成功且退出状态为 0,则为 0,否则为 0。您可以检查 $? 值并相应地打印语句。 输入文件

cat 1.txt 
field1                         : test1
field2                         : test2
field3                         : test3
field4                         : test4
cat 2.txt 
field1 : test1
field2 : test2
field3 : test3
field4 : test4

下面的命令

   > diff -bE 1.txt 2.txt 
   > if [ $? -eq 0 ];then echo SUCCESSFUL; else echo FAIL; fi

输出

SUCCESSFUL

如果文件数据不匹配 [2.txt 中的前导空格]

diff -bE 1.txt 2.txt 
1c1
< field1                         : test1
---
>  field1 : test1
3c3
< field3                         : test3
---
>  field3 : test3

if [ $? -eq 0 ];then echo SUCCESSFUL; else echo FAIL; fi

输出

FAIL