grep 和 tee 用于识别安装过程中的错误



为了确定我的安装是否有我应该注意到的错误,我在文件上使用 grep 命令并使用 tee 写入文件,因为我需要提升权限。

sudo grep -inw ${LOGFOLDER}/$1.log -e "failed" | sudo tee -a ${LOGFOLDER}/$1.errors.log
sudo grep -inw ${LOGFOLDER}/$1.log -e "error" | sudo tee -a ${LOGFOLDER}/$1.errors.log

问题是即使 grep 没有找到任何东西,也会创建文件。有什么方法可以仅在 grep 找到匹配项时才创建文件?

谢谢

你可以用awk替换tee,如果没有什么可写入的,它不会创建文件:

... | sudo awk "{print; print $0 >> "errors.log";}"

但是awk的这种功能很少使用。如果找不到任何内容,我宁愿删除空的错误文件:

test -s error.log || rm -f error.log

而且,顺便说一下,您可以同时对多个单词进行 grep:

grep -E 'failed|error' ...

相关内容

最新更新