2013-03-25 224 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'"}'"

運行此命令給出以下輸出:

標準輸入:是不是tty

AWK:{T + = [email protected]} END {打印總數:,t,通過POP3傳輸的字節}

awk:^表達式中的無效字符'@' sion

看起來問題出在awk '{ t += $1 }因爲@在$ 1,但是我嘗試了幾種不同的方法來逃避這個沒有運氣。任何建議表示讚賞。

+0

你試過\ @或/ @? – user1697575 2013-03-25 15:48:24

+0

因爲它是'awk'{t + = $ 1}的一部分''我試過通過'awk'{t + = \ $ 1}'逃避它,沒有運氣。 – 2013-03-25 15:50:04

+2

這個腳本的目標是實現什麼目標?如果您提供樣本輸入和輸出,我們可能能夠提供更好的解決方案(而不是這個龐大,醜陋的管道)。 – 2013-03-25 15:50:13

回答

1

我不認爲這是你跑的命令,因爲報價不匹配(有一個多餘的")。這聽起來像你實際運行的命令擴展了「$ 1」,從而導致awk解釋一個字面的電子郵件地址,而不是從第一個字段讀取。

最後一部分應該是:

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