繁体   English   中英

比较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

我正在尝试比较文件,如果所有内容都匹配且输出不匹配,则输出为“匹配的所有记录”,然后“ 字段名称的数据不匹配”

我尝试使用diff通过忽略空格来进行基本匹配,但是这种情况没有发生。

diff -byw 1.txt 2.txt

有人可以帮我吗?

问候。

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

您不匹配,因为第二个文件中每行的开头都有空格。 使用sed删除空间

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

现在使用diff -b进行比较就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM