0

2 つのファイルの変更を警告するスクリプトを実行しています。3 行が常に変更されるため、修正する必要があるため、完全に正確ではありません。変更された行を削除するために sed を実行しましたが、少し問題があります (変更された行は、1 ~ 3 行目、8 ~ 11 行目など、場所を移動します)。

if/then/else ステートメントを実行しています。

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

上記の説明では機能しません。したがって、異なる行の合計数が 3 を超える場合は、if then else ステートメントを実行する必要があります。

1つの方法-非常に洗練されていない-は、3番目のファイルに出力するdiffコマンドと、その3番目のファイルの行数です。

diff file1 file2 > file3
wc -l file3

file3 が返されます

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

これにより、変更された行の正確な数をテストできます。例のテストは 3 に等しいです。あなたの場合、 -gt 3? を使用しますか?

それとも、問題を間違って理解しましたか?

ハンヌ

于 2013-11-08T10:19:58.843 に答える