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

时间:2017-11-30 08:42:42

标签: shell unix diff

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

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

和文件2为: -

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

我正在尝试比较文件和输出为"所有记录匹配"如果一切都匹配,如果没有,那么"数据不匹配字段名称"

我尝试使用diff来忽略空格来进行基本匹配,但它没有发生。

diff -byw 1.txt 2.txt

有人可以帮我吗?

问候。

2 个答案:

答案 0 :(得分:2)

在shell中,您可以使用$?检查上一个命令的输出状态。如果最后一个命令成功退出状态为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

答案 1 :(得分:1)

由于第二个文件中每行的开头有空格,因此不匹配。使用sed删除空格

 sed -i 's/^ *//' 2.txt

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