Uuencode не прикрепляет файл к электронной почте и grep не перечисляет имена файлов
Я пытался понять это, но неважно, что я пытаюсь, похоже, это не работает так, как я хочу. В основном, чего не хватает, так это того, что 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 ответа
Пытаться:
{ cat scannedErrors.txt|uuencode scannedErrors.txt;cat Message.txt;}|mailx -s "Scanned Logfile Errors" someone@somewhere.com
потому что есть конфликт между | и <
uuencode scannedErrors.txt
ожидает ввода - когда вызывается только с одной опцией, он рассматривает эту опцию как имя файла для включения в вывод, а не имя файла для чтения. Так что либо делай cat scannedErrors.txt | uuencode scannedErrors.txt
или же uuencode scannedErrors.txt scannedErrors.txt
,
Я не вижу ничего плохого в grep
немного, но может быть полезно поставить cat scannedErrors.txt
там, чтобы убедиться, что вы найдете то, что вы хотите. Вы могли бы также сделать grep ... SystemOut_*[0-9].log
а не для цикла, который сделал бы -H
по умолчанию, но вам, вероятно, все еще понадобится цикл for для переименования, если только у вас нет rename
Доступен скрипт (Perl-скрипт, позволяющий переименовывать объявления с помощью регулярных выражений).