我试图找到以错误结束的工作的id。
当我使用
时for i in *log
do tail -n 1 $i | grep error
echo $i
done
似乎在每个文件的最后一行发现错误,即使对于最后一行没有错误的文件,也会返回所有文件名
STOP fatal_error
out1.log
STOP fatal_error
out2.log
STOP fatal_error
out3.log
....
即使
grep error out1.log
什么都不返回
或者,是否有更简单的方法来获取以错误结束的作业列表?我用qsub标记,因为我使用qsub提交作业
答案 0 :(得分:4)
您需要一个if语句,以便只在grep成功时回显文件名:
for i in *.log
do
if tail -n 1 $i | grep error > /dev/null
then
echo $i
fi
done
此外,将grep
结果重定向到/dev/null
,以便它不会出现在输出中。
答案 1 :(得分:2)
你想说
do tail -n 1 $i | grep error
不
do tail -n 1 *.log | grep error
否则,您将在每次迭代时检查每个日志文件,并始终获得相同的结果。
答案 2 :(得分:0)
你的逻辑错误。 echo $ i将包含文件列表,而不是grep输出