如何检查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