grep 시나리오(궁금합니다.)
      글쓴이: helioce / 작성시간: 월, 2003/11/17 - 12:33오후    
  
  로그파일을 검색히다가 생각나서 질문합니다.
로그파일에서 error=" "패턴을 찾으려고 합니다.
문제는 따옴표안의 문자열이 다르다는 것인데 제가 하고싶은 행위는
따옴표안의 문장이 다른것만 출력시키고 싶습니다.
예를들면 다음과 같은 로그파일이 있다면
error="Invalid Num"
error="Invalid Num"
error="Invalid Num"
error="MapOperation Fail"
error="MapOperation Fail"
찾아낼때는 갯수는 제외하고 종류만뽑아내고 싶은겁니다.
error="Invalid Num"
error="MapOperation Fail"
아시면 답변 부탁드립니다.^^
Forums: 


Re: 꼭 grep 이 아니어도 된다면..
% man uniq
참고하세요.
발 담갔다. 이제 익숙해 지는길만이..
[code:1]만든사람 기노욱. #!/usr/bin/perl
만든사람 기노욱. #!/usr/bin/perl -w ## 실행방법 ## perl this.pl <logfile> .... (갯수에 상관없음) open(LOG,">check.txt"); my %LOG; while(<>) { $filename = $ARGV if($. ==1) #라인번호가 1일경우 #pattern을 골라냄 # if(/regexp/) $pattern = $&; (regexp 자체는 $&, 앞부분은 $` 뒷부분은 $'); # substr($_, start, end); # 위의 둘중에 하나를 패턴으로 넣음 $LOG{$filename}->{pattern} = $pattern; $LOG{$filename}->{count}++; close ARGV if eof; #파일의 끝일경우 라인번호를 초기화함. } ## 자료구조 설명 해쉬를 사용함 # 파일이름에서 패턴을 입력함 # %LOG = ( # filename => # { # pattern => $pattern, # count => $count, # } # ); for $key (keys %LOG) #$key equal filename { print LOG $key,"\n"; print LOG $$LOG{$key}{pattern},"\t"; print LOG $$LOG{$key}{count},"\n"; }uniq는 안됩니다.
uniq는 문자열이 아니라 반복행을 삭제하기땜에 안됩니다.
예제는 행으로 표현되었지만 원래는 반복되는 문자열을 의미한겁니다.
shell로 만든다면 어떻게 하는 것이 좋을까요?
[code:1]grep '^error=\"[^"
grep '^error=\"[^"]*\"' log_file | sort | uniqC FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
더 간단히sort -u:)
더 간단히
sort -u
:)
[quote="cdpark"]더 간단히sort -u:)[/
한방이군요 ^^
좋은 정보 감사합니다.
##########################################################
넘어지는건 아직 괜찮다.
하지만 넘어질때마다 무언가를 주워서 일어나자.
[quote="cinsk"][code:1]grep '^error=\&qu
특별히 문제 될것이 없다면 속도를 위해 fgrep을 쓰시는게...
fgrep 'error=' log_file | sort -cu댓글 달기