gawk sed 사용예제 로그파일을 read 후 상호 diff
## unix shell programing gawk sed 사용예제 로그파일을 read 후 상호 diff
## fault diff VER 1.0 by SJH
#\* \[ \] 와일드카드 문자 앞에 \사용 또는 bash -f 서브쉘에서 사용
#!/bin/ksh
if [ $# -eq 0 ]
then
echo "로그 파일들 중 2개 로그 이상 선택하시오!"
ls -m *log|sed 's/,//g'
echo "사용법1 : faultdiff.sh log_file1 log_fie2 log_file3 ..."
echo "사용법2 : faultdiff.sh 04*.faultlog"
echo "사용법3 : faultdiff.sh 041[1-5].faultlog"
exit
fi
rm fault.list faultp.list fault.diff > /dev/null 2>&1
rm *.ctmp > /dev/null 2>&1
echo "file list =" `echo $*`
awk '{
if (substr($1,1,1)=="H") print $1
}' $* | sort -u > fault.list
sed 's/SDT=/SDT /g' $* | awk '{
if( $4 ~/DIS-FAULT/) date=substr($5,1,4)
if(substr($1,1,1)=="H") {
printf("%s %s %s\n",date,$1,$2)
}
}' > allfault.tmp
awk '{print $1}' allfault.tmp | sort -u > date.tmp
while read DATE
do
echo $DATE > $DATE.ctmp
echo "====" >> $DATE.ctmp
while read LIST
do
gawk -v date=$DATE -v list=$LIST ' BEGIN {
cnt=0 } {
if($1==date && $2==list) cnt=$3
} END {
###검증{printf("%s %s\n",list,cnt); cnt=0}
if (cnt=="0") {printf("[7m%s[0m\n",cnt); cnt=0}
else {printf("%s \n",cnt); cnt=0}
}' allfault.tmp >> $DATE.ctmp
done < fault.list
done < date.tmp
echo fault > faultp.list
echo "====" >> faultp.list
cat fault.list >> faultp.list
paste faultp.list *.ctmp > fault.diff
rm *.ctmp date.tmp allfault.tmp fault*.list
cat fault.diff
'unix_script' 카테고리의 다른 글
ksh 유닉스쉘스크립트 substr tee 사용예제 (0) | 2016.11.04 |
---|