比较两个文件,如果超过三行不同,则采取行动

时间:2013-11-08 09:09:06

标签: shell

我有一个运行的脚本,提醒我两个文件的更改。我需要修改它,因为三条线一直在变化 - 所以它并不完全准确。我已经删除了更改的行,但它有点问题(更改的行在该处移动,有时在第1-3行,有时在第8-11行)。

我让它运行if / then / else语句:

if diff file1 file2 >/dev/null ; then dothis else dothis

根据我的上述说明不起作用。因此,如果不同行的总数大于3,我需要它来执行if then else语句。

单向 - 非常不优雅 - 是我有一个diff命令输出到第三个文件,然后是第三个文件的行数

diff file1 file2 > file3
wc -l file3

file3返回

10 file3

这有点乱,但会起作用......但我不知道如何编写一个语句来查看file3并返回匹配,如果'10 file3'行以数字>开头10 ....

我相信有一个更简单的方法来做到这一点。不知道怎么样。一如既往地谢谢!

1 个答案:

答案 0 :(得分:0)

如果我能正确理解你的问题,这对你有帮助吗?

if [ `diff --changed-group-format='%>' --unchanged-group-format='' \
    file1 file2 | wc -l` -eq 3 ];
then
    echo foo
else
    echo bar
fi

这允许您测试更改行的确切数量,示例测试等于三。在你的情况下,你会使用-gt 3?

或者我是否错误地理解了这个问题?

哈努哈利