0

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

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

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

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

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

diff file1 file2 > file3
wc -l file3

文件 3 返回

10 file3

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

我相信有一种更简单的方法可以做到这一点。不知道如何。一如既往的感谢!

4

1 回答 1

0

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

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

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

还是我对问题的理解有误?

汉努

于 2013-11-08T10:19:58.843 回答