특정 단어 추출 스크립트
글쓴이: chunj101 / 작성시간: 화, 2016/06/28 - 6:28오후
Oracle 얼럿로그에서 특정 단어만 추출하고 싶은데 이게 잘 안되네요 ㅠㅠ
여기저기 찾아봐도 줄단위로 추출하는건 많은데 단어만 추출하려니 구현이 어렵네요...(제가 부족한 탓이겠지요 ㅠㅠ)
너무 해결이 안되어 질문좀 드리겠습니다.
일단 로그파일의 패턴은 이렇습니다.
opiodr aborting process unknown ospid (13781) as a result of ORA-609
ORA-00020: maximum number of processes (2000) exceeded
ORA-20 errors will not be written to the alert log for
ORA-0000: 설명
위와 같은 패턴 하나라면 어찌어찌 해보겠는데 위와 같이 대략 3가지 유형으로 에러로그가 떨어집니다.
여기에서 패턴으로 잡을수 있는건 "ORA-00000" 입니다. (숫자의 자리수 또한 가변적)
제가 추출하고 싶은 문자열은 바로 위 패턴인 "ORA-00000" 입니다.
위 로그파일 예제를 아래와 같이 ORA-00000 만 추출되도록 스크립트를 작성하고 싶습니다.
ORA-609
ORA-00200
ORA-20
awk나 sed를 쓰면 될것 같은데 이게 잘 안되네요.. 도움좀 부탁드리겠습니다~
Forums:
sed로 아래와 같이 하면 그럭저럭 되네요.각
sed로 아래와 같이 하면 그럭저럭 되네요.
각 줄에서 ORA-n... 패턴만 남기고 몽땅 없애버린 뒤에,
그런 식의 교체가 성공한 경우에만 출력하는 식입니다.
한 줄에 ORA-n... 패턴이 두 번 이상 등장할 경우엔 마지막 것이 출력되네요.
ORA- 뒤에 나오는 숫자의 길이를 한정하려면 아래와 같이 할 수 있습니다.
숫자가 3 ~ 5자리로 된 것만 찾아 출력하는 예입니다.
감사합니다~
딱 제가 원했던 방식이네요. ㅎㅎ 감사합니다~
패턴 검색까지는 했었는데 줄전체로 치환이 안되어 고민이었는데 감사합니다~^^
grep이나 awk를 써서 아래와 같이 해도
grep이나 awk를 써서 아래와 같이 해도 되네요.
특히 grep -o 옵션은 한 줄에 여러 개가 매치되어도 다 출력해 주는군요.
grep -o 옵션이 정석인 것 같네요. 요긴하게
grep -o 옵션이 정석인 것 같네요. 요긴하게 써먹을 수 있을 것 같은데 잘 배워 갑니다.
정 닭 잡는 데 소 잡는 칼 쓰고 싶으면 flex 같은 scanner generator를 써도 되긴 될겁니다. 과연 더 빠를까요? 잘 모르겠네요.
댓글 달기