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 回答