2012-07-28 2 views
3

awk에 대한 경고, tips'n'tricks 등을 찾고 있습니다. 예를 들어 :awk에서의 팁 및 답변

awk '$9=="404"{a[$7]++}END{for(i in a)print a[i],i}' access.log|less 

이 코드는 페이지 경로 집계 오류를 인쇄합니다. 이 트릭은, 어떤에 WHINY_USERS를 설정하여 배열을 정렬 할

0이 아닌 값은 자동으로 인쇄하기 전에 배열에 기능을 isort 사용 :

WHINY_USERS=1 awk '$9=="404"{a[$7]++}END{for(i in a)print a[i],i}' access.log|less 

이 코드는 키 같은 오류를 반환하지만 분류됩니다 이름 (경로).

저는이 같은 트릭을 더 찾고 있습니다 - 목록에있는 리소스를 알고 있습니까? 당신이 아는 최고의 트릭을 나눌 수 있습니까? awk wiki를 찾지 못했습니다 - 동일한 오래된 밧줄 만 반복해서 반복합니다 ...

+1

http://www.gnu.org/software/gawk/manual/html_node/Debugger.html

도 http://awk.info를 참조하십시오. awk의 응용 프로그램에 대한 다양한 글쓰기 (그러나 트릭 목록은 아닙니다). awk의 가장 좋은 속임수는 숫자 필드, split(), substr(), (g | gen) sub() 및 연관 배열, 물론 ol if-then-else 논리입니다. 행운을 빕니다! – shellter

+1

'gawk 4.0'에서'WHINY_USERS'가 삭제되었습니다 ([diff] (http://git.savannah.gnu.org/cgit/gawk.git/commit/main.c?h=gawk-4.0-stable&id=6b9ed56f74baa4af529e100dff19afcd23ed7cd8 참조).)). 이 플래그는 배열이 작동하는 방식을 바꾸고 있습니다. isort로는 할 수 없습니다. – slitvinov

+2

gawk 4.0에서는'gawk' 프로그램에서'PROCINFO [ "sorted_in"] = "@ind_num_asc"'를 사용하여 WHINY_USERS = 1과 같은 결과를 얻을 수 있습니다. https://www.gnu.org/software/gawk/manual/gawk.html#Controlling-Scanning을 참조하십시오. –

답변

5

디버거를 얻었다.

Starting dgawk is exactly like running awk. The file(s) containing 
the program and any supporting code are given on the command line 
as arguments to one or more -f options. (dgawk is not designed to 
debug command-line programs, only programs contained in files.) In 
our case, we call dgawk like this: 

    $ dgawk -f getopt.awk -f join.awk -f uniq.awk inputfile