2012-06-08 6 views
3

이미 다른 스레드가 많이 있다는 것을 알고 있습니다 만, 내가 찾을 수있는 것은 아무 것도 내가 정확히 무엇을하려고하는지 잘 설명하는 것 같지 않습니다.한 줄씩 텍스트 파일을 스캔하고 유닉스 쉘 스크립트로 라인을 읽으십시오.

기본적으로 텍스트 파일을 한 행씩 탐색하고 "오류"또는 "예외"단어를 검색하는 셸 스크립트를 갖고 싶습니다. 그 단어들을 가로 질러 올 때마다 나는 줄 번호를 기록 할 것이고 그래서 나중에 문제가있는 줄이있는 이메일에서 텍스트 파일을 쏠 수있다.

줄마다 텍스트 파일을 반복하는 방법을 설명하는 많은 내용을 보았지만 그 줄에서 정규식을 어떻게 실행할 수 있는지 이해할 수 없습니다. 쉘 스크립트와 함께 정규 표현식을 사용하고 또한 각 라인이 어떤 변수에 저장되어 있는지 ...

누구든지 나를 위해 이러한 것들을 명확히 할 수 있다면 정말 고맙겠습니다.

답변

0

자동으로 파일을 반복하는 다양한 도구가 있습니다. 내가 공급하고있어 옵션을 이해하는

grep -inE 'error|exception' logfile > /tmp/logSearch.$$ 
if [[ -s /tmp/logSearch.$$ ]] ;then 
    mailx -s "errors in Log" < /tmp/logSearch.$$ 
fi 
/bin/rm /tmp/logSearch.$$ 

사용 man grep : 내가 좋아하는 간단한 솔루션을 제안합니다.

사람 강타

-s file 
True if file exists and has a size greater than zero. 

`에서 난이 도움이되기를 바랍니다.

+0

이것은 도움이 되긴하지만 약간 혼란 스럽습니다. 이것은 "오류"또는 "예외"가있는 전체 행을 복사하여 임시 파일에 던지려고합니다. 대신 배열의 행 번호를 유지하고 전자 메일로 보낼 수 있습니까? 오류 또는 예외가있는 행에 실제로 필요한 모든 정보가 포함되어 있지 않기 때문입니다. 그 아래의 줄은 오류의 모든 실제 세부 사항입니다. –

+0

사실 나는 바보입니다. 나는 그 안에 -n을 포함시킬 수 있으며, 내가 원하는 것을 정확히 할 수있다 ... 나는 생각한다? –

+0

@ sil40 : 도움이 된 것을 기쁘게 생각합니다. '-n'은 줄 번호를 출력하기 때문에 필요한 정보가 포함 된 정보를 얻을 수 있습니다. 또한, 일부 greps은'context' 매개 변수를 지원합니다. 즉, 일치하는 행을 둘러싼 N 행을 표시합니다. grep의 버전에 맞는지'man grep'을 확인하십시오. 그 것이 명확하지 않지만'context' 옵션이있는 것을 발견하면, 한 파일에서 그것을 테스트하여 어떤 일이 일어나는지 확인하십시오; 주변 컨텍스트에 대한 값으로 '4'를 시도하십시오. 좋은 lukc. – shellter

0

grep 명령을 사용해야합니다. 이 도구를 사용하면 특정 문자열을 검색하고 줄 번호와 줄 자체를 출력하고 훨씬 더 많은 작업을 수행 할 수 있습니다. 당신에게 특별한 관심을 가질만한 기사에서 http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/

포인트 # 15 : 여기

명령을 사용하여 실용적인 예제와 사이트에 대한 링크입니다.

+0

이것이 히트가 될 때까지만 실행되는지 알고 있습니까? 파일에 수십 개의 오류나 예외가있을 수 있기 때문입니다. –

+0

전체 파일 또는 파일 집합을 통해 실행할 수 있습니다. Unix 기반 시스템에서 가장 다양한 명령입니다. 자세한 내용은 man 페이지를 살펴보십시오 ("man grep"입력). 제 답변이 도움이된다면 투표를 고려하십시오. 환호 –

+0

숫자 15는 실제로 매우 유용 할 것이지만 실제로 그 선을 기록하는 방법을 알지 못합니다. 그것들은 터미널로 보내지는 것처럼 보이지만 거기에서 어디로 가야할지 모르겠습니다. –

관련 문제