2016-06-10 8 views
-1

awk에서 코드하기 위해 Windows 용 cygwin을 사용하고 있습니다. 실제로이 언어에 익숙하지 않습니다. 필티 컬 필드에 특정 문자열이 있으면 전체 줄을 인쇄하는 작은 라이너를 작성했습니다.awk의 필드에서 특정 문자열을 검색합니다.

$ awk -F '[:,]' '{if($9 == "QueCmd0") print $0 }' #QueCmd0 is the name of the string. 

":"및 ","는 필드 구분 기호입니다.

코드는 작은 텍스트 파일 (최대 6-7MB 정도)에서는 잘 작동하지만 .txt 파일 크기가 클 때 (약 10-15MB)이 코드는 출력을 표시하지 않습니다. 문제가 어디에 있는지 나는 모른다. 내가 알아야 할 것이 있으면 나를 도와주세요. 당신은 내가 보증 할 수 없음을 사용하는

AWK에 실패 할 큰 파일의 고유 아무것도 없다
+3

sidenote에서 스크립트는''$ 9 == "QueCmd0" ''과 같습니다. 이것이 awk에서 블록이 작동하는 방식입니다. – Bernhard

+1

전체 로그에서 샘플 라인으로 질문을 업데이트 할 수 있습니까? – Inian

+1

'awk'는 작은 파일들과 함께 작동 할뿐만 아니라 큰 파일들과 마찬가지로 잘 작동합니다. Inian이 말했듯이 인쇄해야한다고 생각하는 대용량 파일에서 하나 이상의 줄을 표시해야합니다. 해당 행을 선택하면 [편집] (http://stackoverflow.com/posts/37742363/edit)을 클릭하여 질문에 추가 할 수 있습니다. – John1024

답변

0
awk -F '[:,]' '{if($9 == "QueCmd0") print $0}' 
awk -F '[:,]' '{if($9 == "QueCmd0") print}' 
awk -F '[:,]' '$9 == "QueCmd0" {print}' 
awk -F '[:,]' '$9 == "QueCmd0"' 

,
OS에 사전에

감사합니다.

어쩌면 짧은 버전을 원하십니까?

+0

예, 텍스트가 유니 코드로 인코딩되었으므로 문제가 발생했습니다. UTF-8로 변경된 경우에는 – pr21196