使用awk逃脱@

时间:2013-03-25 15:46:04

标签: bash shell ssh awk cut

我有以下内容:

ssh $DOMAIN -l root "grep "'$EMAIL@$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'"}'"

运行此命令将提供以下输出:

  

stdin:不是tty

     

awk:{t + = blah@email.com} END {打印总数:,t,通过POP3传输的字节数}

     

awk:^表达式

中的char'@'无效

看起来问题出在awk '{ t += $1 },因为$ in $ 1,但是我已经尝试了几种不同的方法来逃避这一点而没有运气。任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

我不认为这是你运行的命令,因为引号不匹配(有一个多余的")。听起来你实际运行的命令扩展为“$ 1”,从而导致awk解释文字电子邮件地址而不是从第一个字段读取。

最后一部分应该是:

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