2013-03-25 2 views
0

를 사용하여 @ 나는 다음과 같은 한 :탈출 AWK

표준 입력 :이 명령을 실행

ssh $DOMAIN -l root "grep "'[email protected]$DOMAIN'" /var/log/maillog | grep retr= | grep -v retr=0 | awk '{ print "'$11'" }' | cut -d, -f1 | cut -d= -f2 | awk '{ t += $1 } END { print "'total: '", t, "' bytes transferred over POP3'"}'"

다음과 같은 출력을 제공하는 것은 {t의 + : 청각 장애

AWK 아니다 = [email protected]} 끝 {인쇄 합계 :, t, POP3를 통해 전송 된 바이트}

awk :^잘못된 문자 '@'in expres 시온

@ $ 1로 인해 awk '{ t += $1 } 인 것처럼 보이지만, 행운을 남기지 않고 여러 가지 방법으로 시도해 보았습니다. 모든 조언을 부탁드립니다.

+0

당신이 @ 또는/@ \ 시도? – user1697575

+0

'awk '{t + = $ 1}'의 일부이기 때문에'awk'{t + = \ $ 1}'을 통해 그것을 벗어나려고했습니다. –

+2

이 스크립트의 목표는 무엇입니까? 샘플 입출력을 제공하면보다 큰 솔루션을 제공 할 수 있습니다 (거대하고 추악한 파이프 라인과는 대조적 임). –

답변

1

따옴표가 일치하지 않아 불필요한 "이 있으므로 실행 한 명령이라고 생각하지 않습니다. 실제로 실행 한 명령이 "$ 1"로 확장 된 것처럼 들리므로 awk는 첫 번째 필드에서 읽는 대신 리터럴 전자 메일 주소를 해석합니다.

마지막 부분은 다음과 같아야합니다

awk '{ t += $1 } END { print "total: ", t, " bytes transferred over POP3"}'