Linux grep和tee在安装过程中识别错误

Linux grep和tee在安装过程中识别错误,linux,grep,tee,Linux,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命令,并使用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找到匹配项,我是否可以创建文件


谢谢

您可以将
tee
替换为
awk
,如果没有要写入的内容,它将不会创建文件:

... | sudo awk "{print; print \$0 >> \"errors.log\";}"
但awk的这种特性很少使用。如果找不到任何内容,我宁愿删除空错误文件:

test -s error.log || rm -f error.log
顺便说一下,您可以同时grep多个单词:

grep -E 'failed|error' ...

您可以将
tee
替换为
awk
,如果没有要写入的内容,它将不会创建文件:

... | sudo awk "{print; print \$0 >> \"errors.log\";}"
但awk的这种特性很少使用。如果找不到任何内容,我宁愿删除空错误文件:

test -s error.log || rm -f error.log
顺便说一下,您可以同时grep多个单词:

grep -E 'failed|error' ...

谢谢。还有关于grep多词搜索的建议:)谢谢。多次搜索完成:sudogrep-E“failed | error”-inw${LOGFOLDER}/$1.log,效果很好。awk命令返回一个错误:sudo grep-E“failed | error”-inw${LOGFOLDER}/$1.log | sudo awk“{print;print$0>'${LOGFOLDER}/$1.errors.log';}”返回:awk:cmd。第1行:{print;print-bash>>'errors.log';}awk:cmd。行:1:^表达式awk:cmd中的字符“”无效。第1行:{print;print-bash>>'errors.log';}awk:cmd。第1行:^语法错误引号需要转义:
“{print;print\$0>\”${LOGFOLDER}/$1.errors.log\”;}”
非常感谢。还有关于grep多词搜索的建议:)谢谢。多次搜索完成:sudogrep-E“failed | error”-inw${LOGFOLDER}/$1.log,效果很好。awk命令返回一个错误:sudo grep-E“failed | error”-inw${LOGFOLDER}/$1.log | sudo awk“{print;print$0>'${LOGFOLDER}/$1.errors.log';}”返回:awk:cmd。第1行:{print;print-bash>>'errors.log';}awk:cmd。行:1:^表达式awk:cmd中的字符“”无效。第1行:{print;print-bash>>'errors.log';}awk:cmd。行:1:^语法错误引号需要转义:
“{print;print\$0>\”${LOGFOLDER}/$1.errors.log\”;}”