프리랜서 웹수리천사

반응형

## 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
신일 리모컨 이동식 에어컨 SMA-D850SI [4개월]프롬바이오 관절연골엔 보스웰리아(850mg*30정*8박스), 단품, 단품