안녕하세요. 현재 코드는 다음과 같습니다.
find /home/user/logfilesError/ -maxdepth 1 -type f -name "gBatch_*"\
-daystart -mtime -1 -exec grep -rl "ERROR" "{}" + | xargs -l basename
if [ $? -eq 0 ]; then
tday="$(date +'%d.%m.%Y')"
echo "ERROR found on $tday in the files obove!"
else
tday="$(date +'%d.%m.%Y')"
echo "No ERROR was found at the $tday !"
fi
코드는 현재 (지난 24시간이 아닌) 당일에 생성되거나 편집된 로그 파일을 출력하고 로그 파일에 "오류"가 포함되어 있는지 검색하고 어떤 로그 파일에 오류가 있는지 또는 오류가 없는지 간단히 나타냅니다. 오류가 그렇게 나와 있습니다.
이름에 대해 일부 검열을 했으므로 내가 엉망이라고 생각하지 마세요. 그래서 작동하지 않은 것입니다 ;-)
출력(예):
gBatch_2070.log
gBatch_2071.log
ERROR found on 25.06.2014 in the files obove!
폴더는 다음과 같습니다.
각 파일은 다음과 같습니다.
내가 원하는 출력:
파일 이름 + "ERROR" + 오류 후 메시지
예:
gBatch_2067.log - 오류 **.batch.BatchStart = 일괄 처리 완료, gBatch_2077.log - 오류 **.batch.BatchStart = 일괄 처리 완료, ...
도움을 주셔서 미리 감사드립니다!
답변1
검색할 내용은 다음과 같습니다.
find /home/user/logfilesError/ -maxdepth 1 -type f -name "gBatch_*" -daystart -mtime -1 \
-exec grep -H "ERROR" {} \; | sed -e 's/.*\/gBatch_/gBatch_/g' -e 's/:[^E]*/: /g' | tr '\n' ', '
예제 출력:
gBatch_2070.log:ERROR **.batch.BatchStart = Batchverarbeitung beeendet, gBatch_2077.log - ERROR **.batch.BatchStart = Batchverarbeitung beeendet
gBatch_2070.log:ERROR **.batch.BatchStart = Batchverarbeitung beeendet, gBatch_2077.log - ERROR **.batch.BatchStart = Batchverarbeitung beeendet
gBatch_2071.log:ERROR **.batch.BatchStart = Batchverarbeitung beeendet, gBatch_2077.log - ERROR **.batch.BatchStart = Batchverarbeitung beeendet
...
설명하다:
-H
또한 grep이 파일 이름을 인쇄하도록 강제합니다.sed 's/.*\/gBatch_/gBatch_/g'
파일 이름을 기본 파일 이름으로 설정
답변2
find /home/user/logfilesError/ -maxdepth 1 -type f -name "gBatch_*"\
-daystart -mtime -1 -exec grep -rl "ERROR" "{}" + | xargs -l basename\
> /tmp/files_found
if [ $? -eq 0 ]; then
tday="$(date +'%d.%m.%Y')"
while read line
do
error=`grep "ERROR" /home/user/logfilesError/$line`
error=`echo $error | sed 's/^.*ERROR/ERROR/' | tr '\n' ', '`
echo "$line - $error"
done < /tmp/files_found
echo "ERROR found on $tday in the files obove!"
rm /tmp/files_found
else
tday="$(date +'%d.%m.%Y')"
echo "No ERROR was found at the $tday !"
fi