“awk”与“watch”一起使用时不起作用

“awk”与“watch”一起使用时不起作用

为了查看我的 IPv6 流量总数,我需要运行以下命令:

netstat -s -6 | grep -i octet | grep -vi cast | awk '{ print $2/(1024*1024*1024) }'

与“watch -n1”结合,因此它每秒运行一次:

watch -n1 "netstat -s -6 | grep -i octet | grep -vi cast | awk '{ print $2/(1024*1024*1024) }'"

但它失败了:

awk: line 1: runaway regular expression /(1024*1024 ...

我从这里摘取了一句话:http://ipv6-or-no-ipv6.blogspot.de/2013/06/measure-ipv4-versus-ipv6-traffic-on.html

有任何想法吗?

答案1

如果在 之前加上反斜杠$2,就可以解决这个问题:

watch -n1 "netstat -s -6 | grep -i octet | grep -vi cast | awk '{ print \$2/(1024*1024*1024) }'"

答案2

如果你将命令放在双引号中",则需要转义"$

watch -n1 "netstat -s -6 | grep -i octet | grep -vi cast | awk '{ print \$2/(1024*1024*1024) }'"

如果将命令放在单引号中',则不必转义"$,但是如果命令中有单引号,则必须结束单引号并添加转义的单引号\'

watch -n1 'netstat -s -6 | grep -i octet | grep -vi cast | awk '\''{ print $2/(1024*1024*1024) }'\'

相关内容