我有以下格式的两个文本文件
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 :(得分: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比较它会正常工作。