2011-11-19 2 views
1

이 awk 코드의 여러 변형을 보았습니다. (사람들은 자신의 전자 메일 주소를 표시하기 위해 다시 작성했습니다) 나는 여기서 무슨 일이 일어나고 있는지 이해할 수 없습니다. 누군가 나를 부 풀릴 수 있습니까?AWK 초급,이 코드는 어떻게됩니까?

http://www.gnu.org/s/gawk/manual/html_node/Signature-Program.html

코드;

awk 'BEGIN{O="~"~"~";o="=="=="==";o+=+o;x=O""O;while(X++<=x+o+o)c=c"%c"; 
    printf c,(x-O)*(x-O),x*(x-o)-o,x*(x-O)+x-O-o,+x*(x-O)-x+o,X*(o*o+O)+x-O, 
    X*(X-x)-o*o,(x+X)*o*o+o,x*(X-x)-O-O,x-O+(O+o+X+x)*(o+O),X*X-X*(x-O)-x+O, 
    O+X*(o*(o+O)+O),+x+O+X*o,x*(x-o),(o+X+x)*o*o-(x-O-O),O+(X-x)*(X+O),x-O}' 

출력;

[email protected] 

답변

4

대부분의 마법은 printf 문에 있습니다.

의 printf 문과의 sprintf() 함수의 AWK 버전 (아래 참조) 동의 다음 변환 사양 형식 : 이것은 AWK man 페이지에서입니다

%c
ASCII 문자. %c에 사용 된 인수가 숫자 인 경우 이 문자로 처리되어 인쇄됩니다. 그렇지 않으면 인수는 문자열로 간주되며 해당 문자열의 첫 번째 문자 만 인쇄됩니다.
+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다. 그것은 내가 필요로했던 찌르다, 나는 지금 자기 자신을 썼다 : D – jwbensley