[완료]정규표현식 [^abc] 의 동작여부

mahapunch의 이미지

로그 파일을 분석하기 위해 다음과 같은 문장을 썻습니다.

test.txt 내용
fileFormat011.dat
fileFormat011.info
fileFormat012.dat
fileFormat012.info
fileFormat013.dat
fileFormat013.info
fileFormat014.dat
fileFormat014.info

위 파일에서 info 확장자로 끝나지 않는 파일이름들만을 추출하기 위해 다음과 같이 했습니다.

> cat test.txt | awk '/^fileFormat.*[^info]$/' > result.txt

결과는... info 라인도 전부 가져오네요.. 뭐가 잘못된거죠??
웃긴건 이게 gVim 에서 패턴 테스트 해보면 잘된다는겁니다.

## 사용하고 있는 OS 는 SunOS 5.10 입니다.

netionics의 이미지

GNU awk 4.0.0으로 실행해 봤을 때는 *.dat만 출력되었습니다.

awk 버전이 몇인지 test.txt가 dos 파일이 아닌지 확인해보세요

입력 파일에 문제가 있는 경우가 의외로 자주 있습니다.

덧붙여 info로 끝나지 않는 것만 골라내려면 다음과 같이 해야 합니다.

awk '!/info$/' test.txt

[^info]$ 는 ‘i’나 ‘n’, ‘f’, ‘o’가 아닌 문자로 끝나는 것을 가리킵니다.

의도한 바와 다릅니다.

:)

mahapunch의 이미지

!/pattern/ 이런게 되는줄 몰랐네요

말씀해 주신 방법으로 해결했습니다. 감사합니다~

better tommrow than yesterday - cs. shin.