用于比较多个文件的Shell脚本

时间:2018-02-20 11:36:54

标签: shell awk diff difference comm

我在比较脚本中的两个文件。使用命令

comm -3 123.txt 321.txt" 

这两个文件123和321只有数字内容。

我也用

diff -ibw abc.txt cba.txt

这些文件abc和cba具有字母数字内容

如果没有不匹配没有打印输出,你可以帮我写下如下的条件。

如果没有区别我需要打印files match 如果存在差异,我想打印mismatch found以及不匹配的输出。

2 个答案:

答案 0 :(得分:0)

shell脚本非常简单。当您在Unix / Linux中执行diff命令时,如果没有差异则返回0,如果不同则返回1,您可以在系统变量$?中检查它。

例如: -

#!/bin/bash

diff abc.txt cba.txt  > /dev/null 2>&1 #not to print the out put of from diff command

if [ $? -eq 0 ]; then
   echo "files match"  
else
   echo "mismatch found"
fi   

但是如果您使用不同的命令,只需在成功时使用echo $?检查退出值,但不成功时相应地更改if条件。

答案 1 :(得分:0)

如果使用GNU bash,请使用内置列表运算符&&||来执行此操作。

diff -ibw abc.txt cba.txt &>/dev/null && echo "Files Match" || echo "Files do not match"

来自man bash

  

AND和OR列表分别是由&&││控制运算符分隔的一个或多个管道的序列。和。和   OR列表以左关联性执行。 AND列表的格式为

          command1 && command2
     当且仅当command2返回退出状态为零时才执行

command1

   An OR list has the form

          command1 ││ command2
     当且仅当command2返回非零退出状态时,才执行

command1。 AND和OR列表的返回状态是退出状态   最后一个          命令在列表中执行。