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