1
$ cat file 
aa
Baa
CaaD
$ sed -i -e 's/aa/AA/' file
$ echo $?
0
$ cat file
AA
BAA
CAAD
$ sed -i -e 's/aa/AA/' file
$ echo $?
0

この sed コマンドの終了ステータスは、変更するかどうかにかかわらず同じであり、0 と同じ終了ステータスを返します。変更された場合は 0 になり、何も変更されていない場合は 1 になります。

grepコマンドが文字列を見つけた場合は0を返し、そうでない場合は1を返す場合、sedコマンドがファイルを変更する場合と同じように、0を返す必要があり、sedコマンドは何も変更しない場合、1を返す必要があります

sed internal 'q' コマンドを使用しようとしましたが、役に立ちませんでした。私を助けてください。

4

1 に答える 1

1

答えは「それがsedの実装方法だからです」

変更があったかどうかを確認したい場合

sed -i.bak -e 's/aa/AA/' file
if diff -q file file.bak >/dev/null; then
    echo no changes
else
    echo something changed
fi
于 2013-10-18T10:08:04.870 に答える