如何检查sed是否已更改文件

我试图找到一种聪明的方法来找出传递给sed的文件是否已成功更改。

基本上,我想知道文件是否已更改,而不必查看文件修改日期。

我之所以需要这样做,是因为如果sed成功替换了模式,我需要做一些额外的事情。

我目前有:

    grep -q $pattern $filename

if [ $? -eq 0 ]

then

sed -i s:$pattern:$new_pattern: $filename

# DO SOME OTHER STUFF HERE

else

# DO SOME OTHER STUFF HERE

fi

上面的代码有点贵,我希望能够在这里使用一些技巧。

回答:

您可以awk改用:

awk '$0 ~ p { gsub(p, r); t=1} 1 END{ exit (!t) }' p="$pattern" r="$repl

我忽略了该-i功能:您可以根据需要使用Shell做重定向。

叹。下面有许多评论要求提供有关shell的基础教程。您可以按以下方式使用上面的命令:

if awk '$0 ~ p { gsub(p, r); t=1} 1 END{ exit (!t) }' \

p="$pattern" r="$repl" "$filename" > "${filename}.new"; then

cat "${filename}.new" > "${filename}"

# DO SOME OTHER STUFF HERE

else

# DO SOME OTHER STUFF HERE

fi

我不清楚“ DO SOME OTHER STUFF HERE”在每种情况下是否相同。两个块中任何类似的代码都应进行相应的重构。

以上是 如何检查sed是否已更改文件 的全部内容, 来源链接: utcz.com/qa/413012.html

回到顶部