我有一个由服务器写入的日志文件。如果服务器出现错误,我编写了一个 bash 脚本向我发送电子邮件。我现在想删除包含错误的行,这样我就不会继续收到电子邮件了。我通过执行以下操作来完成此操作:
sed -i "/WARNING/d" logs/console.log
但是,在运行 sed 之后,不会再将更改写入日志。我猜这是因为运行 sed 会关闭任何打开的文件描述符或其他东西。但是,当我编辑文件并使用 vi 手动删除警告行时,我没有这个问题。
我还尝试使用“>”和“>>”运算符自己重定向服务器输出,并在使用 sed 编辑文件后发生同样的事情(即它们不再更新)。