| 2772 번 글의 답장글: Re: 파일에서 원하는 날짜만... |
| 글쓴이: 산이
[홈페이지]
|
글쓴날: 2008년 06월 17일 04:14:32 화(새벽) |
조회: 2577 |
[김리]님이 남기신 글:
>-----------------------------------------
>답변자가 기본적으로 참고할 내용입니다.
>- 배포판(옵션) :
>- 커널버전(옵션)
:
>- 데몬버전(예:apache
1.3.27) :
>- 데몬설치유형(RPM/컴파일/기타)
:
>-----------------------------------------
>*스팸필터링:한글
4자(8개 문자) 이상 없으면 스팸페이지로 이동합니다.
>
>안녕하세요. ^^;
>로그가 쌓이는 파일이 있습니다.
>
>파일내용에 보면 날짜가
>-----------------------------
>
>Sat Jul 28 05:11:10 2001
>ERROR- 어쩌구 저쩌구..
>
>------------------------------
>
>이런식으로 되어있습니다.
>제가 원하는건 ERROR- 라는 문자가 있는 텍스트를 찾되
>위에 날짜가 오늘것만.. 또는 언제 이후것만 찾고
싶은데
>도저히 감이 안오네요.
>
>ex) sh searcherror.sh 0 <= 오늘것만 가져오기
> sh searcherror.sh 3 <= 3일 이내것만 가져오기
>
>이런 형식인데요.. 어떤식으로 구현해야 할지 느낌이 잘
안오네요..ㅜㅜ
========================================
일단 쉘로 구현하기가 약간 까다로워 보이네요.
perl 이나 php 또는 파이썬을 이용해서 라인단위로 읽어서 특정
문자열(ERROR)을 만나면 그 이전 라인을 파싱해서 출력하는
방식으로 구현해야 합니다.
쉘로는
tr "@" "_AT_" < logfile | tr "\n" "@" |
sed -e "s/@ERROR/ ;ERROR/g" | tr "@" "\n" | sed -e
"s/_AT_/@/g" | grep ERROR | grep -v grep
이렇게 하면 ERROR 문자열을 포함한 라인과 바로 위의 라인을
한줄로 출력합니다.
출력한 결과의 각 라인의 "Sat Jul 28 05:11:10 2001" 이것을
현재 시각과 비교해서 오늘것인지 어제것인지 비교 판단해야
하는데 shell 자체로 좀 까다롭네요.
굳지 쉘로 하고자 한다면 php 의 도움을 받아야 합니다.
LTIME=`/paht/to/php -r 'echo strtotime("Sat Jul 28 05:11:10 2001");'`
이렇게 하면 $LTIME 변수에 unix timestamp 값이 저장됩니다.
이 unix timestapm 값에 대한 날짜를 YYYYMMDD 형태는
LDATE=`/path/to/php -r 'echo date("Ymd",$LTIME)';`
이고,
현재 시각에 대한 오늘 날짜는 DATE=`date '+%Y%m%d'` 이렇게
하면됩니다.
또한 하루전은 DATE=`date --date '1 days ago' '+%Y%m%d'`
$LDATE 와 $DATE 가 비교해서 같다면 해당 라인은 매치되는
경우이므로
해당 라인을 echo 하면 되겠죠.
그런데 이렇게 쉘로 짜는 것 보다는 차라니 php 를 전체를
짜는게 좋을 수 있습니다.
..................
-- searcherror.sh --------------
#!/bin/sh
BDATE=`date --date "$1 days ago" "+%Y%m%d"`
IFS="
"
for LINE in `tr "@" "_AT_" < logfile | tr "\n"
"@" | \
sed -e "s/@ERROR/ ;ERROR/g" | tr "@" "\n" | \
sed -e "s/_AT_/@/g" | grep ERROR | grep -v grep` ; do
STIME=`echo $LINE | awk -F ';' '{print $1}'`
LDATE=`/path/to/php -r 'echo
date("Ymd",strtotime("${STIME}"))';`
if [ "${BDATE}" = "${LDATE}" ] ; then
echo $LINE
fi
done
exit $?
---------------
한번 테스트해 보시고 고쳐서 사용해 보세요. 실행해 보질
않았음.
|
이전글 : 파일에서 원하는 날짜만...
다음글 : Re: Re: 파일에서 원하는 날짜만...
|
from 211.108.72.38
JS(Redhands)Board 0.4 +@
|