Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 逃逸@使用awk_Bash_Shell_Ssh_Awk_Cut - Fatal编程技术网

Bash 逃逸@使用awk

Bash 逃逸@使用awk,bash,shell,ssh,awk,cut,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',t',t,“'通过POP3'}'传输的字节数 运行此命令将提供以下输出: 斯丁:这不是一个tty awk:{t+=blah@email.com}结束{打印总数:

我有以下资料:

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',t',t,“'通过POP3'}'传输的字节数

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

斯丁:这不是一个tty

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

awk:^表达式中的字符'@'无效


看起来问题出在awk{t+=$1}上,因为$1中有@in,但是我尝试了几种不同的方法来逃避这个问题,但没有成功。任何建议都非常感谢。

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

最后一部分应该是:

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

您尝试过\@或/@?因为它是
awk'{t+=\$1}
的一部分,所以我尝试过通过
awk'{t+=\$1}
转义它,但运气不好。这个脚本想要实现的实际目标是什么?如果您提供示例输入和输出,我们可能会提供更好的解决方案(相对于这个庞大、丑陋的管道)。您在这里所做的大多数事情(grep、cut等)都可以在bash中本机完成…或者在单个awk脚本中完成(awk实际上是一种完整的编程语言)。在shell脚本中完成所有操作,然后执行
ssh$DOMAIN-l root script.sh