Uuencode没有将文件附加到电子邮件,而grep没有列出文件名

时间:2012-06-20 13:24:34

标签: shell unix grep mailx uuencode

我一直试图解决这个问题,但无论我尝试什么,似乎并没有像我想的那样工作。基本上缺少的是grep在找到匹配项时没有列出文件名(我认为这是-H标志应该做什么?)并且uuencode似乎不想附加文件电子邮件。我已经尝试了uuencode和cat,我无处可去。

有人知道这里可能出现什么问题吗?

for i in `ls SystemOut_*[0-9].log`; do
    grep -inEH '^\[.*(error|exception)' $i >> scannedErrors.txt;
    mv "$i" "${i%.log}"_scanned.log;
done
if [[ -s scannedErrors.txt ]]; then
    uuencode scannedErrors.txt | mailx -s "Scanned Logfile Errors" someone@somewhere.com < Message.txt;
fi
/bin/rm scannedErrors.txt;

2 个答案:

答案 0 :(得分:0)

uuencode scannedErrors.txt期待输入 - 当仅使用一个选项调用时,它将该选项视为要包含在输出中的文件的名称,而不是要读取的文件的名称。因此,cat scannedErrors.txt | uuencode scannedErrors.txtuuencode scannedErrors.txt scannedErrors.txt

我不一定认为grep位有任何问题,但在cat scannedErrors.txt放置可能会有用,以确保找到你想要的东西。您也可以执行grep ... SystemOut_*[0-9].log而不是for循环,这会使-H成为默认值,但您可能仍需要for循环来重命名,除非您恰好拥有{{1可用的脚本(允许通过正则表达式进行创意重命名的perl脚本)。

答案 1 :(得分:0)

尝试:

{ cat scannedErrors.txt|uuencode scannedErrors.txt;cat Message.txt;}|mailx -s "Scanned Logfile Errors" someone@somewhere.com

因为|之间存在冲突和&lt;