Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较unix shell脚本中的2个文本文件_Shell_Unix_Diff - Fatal编程技术网

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

比较unix shell脚本中的2个文本文件,shell,unix,diff,Shell,Unix,Diff,我有以下格式的2个文本文件 field1 : test1 field2 : test2 field3 : test3 field4 : test4 并将文件2作为:-- 我试图比较文件,如果所有内容都匹配,则输出为“所有记录匹配”,如果不匹配,则输出为“字段名的数据不匹配” 我试图通过忽略空白来使用dif

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

field1                         : test1
field2                         : test2
field3                         : test3
field4                         : test4
并将文件2作为:--

我试图比较文件,如果所有内容都匹配,则输出为“所有记录匹配”,如果不匹配,则输出为“字段名的数据不匹配”

我试图通过忽略空白来使用diff进行基本匹配,但没有实现

diff -byw 1.txt 2.txt
有人能帮我做同样的事吗


注意。

由于第二个文件中每行的开头都有空格,所以您的数据不匹配。使用sed删除空间

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

现在使用diff-b进行比较,结果会很好。

由于第二个文件中每行的开头都有空格,所以存在不匹配。使用sed删除空间

 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

在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

“它没有发生”的确切含义是什么?diff的输出是什么?你试过-b吗?是的,我试过-b。它将所有行显示为不匹配-忽略选项卡扩展。“它没有发生”的确切含义是什么?diff的输出是什么?你试过-b吗?是的,我试过-b。它将所有行显示为不匹配-忽略选项卡扩展。谢谢:)。。成功了。你能告诉我如何根据精确匹配打印成功或失败吗谢谢:)。。成功了。你能告诉我如何根据精确匹配打印成功或失败吗