在here中,我得到了以下命令:
awk '/em1/ {i++; rx[i]=$2; tx[i]=$10}; END{print rx[2]-rx[1] " " tx[2]-tx[1]}' \
<(cat /proc/net/dev; sleep 1; cat /proc/net/dev)完全按照预期工作。但是,我会以Mbps格式输出,因此我创建了两个命令,一个用于上传,一个用于下载(两者都工作):
awk '/^e/ {i++; rx[i]=$2}; END{printf("%.2f Mbps", \
((rx[2]-rx[1])/1024/1024))}' <(cat /proc/net/dev; sleep 1; \
cat /proc/net/dev) # download
awk '/^e/ {i++; tx[i]=$10}; END{printf("%.2f Mbps", \
((tx[2]-tx[1])/1024/1024))}' <(cat /proc/net/dev; sleep 1; \
cat /proc/net/dev) # upload但是当我试图合并的时候,却出现了一些错误:
$ awk '/^e/ {i++; rx[i]=$2}; tx[i]=$10}; \
END{printf(" down: %.2f Mbps, up: %.2f Mbps", \
((rx[2]-rx[1])/1024/1024)), ((tx[2]-tx[1])/1024/1024))}' \
<(cat /proc/net/dev; sleep 1; cat /proc/net/dev)
awk: cmd. line:1: /^e/ {i++; rx[i]=$2}; tx[i]=$10}; END{printf(" down: %.2f Mbps, up: %.2f Mbps", ((rx[2]-rx[1])/1024/1024)), ((tx[2]-tx[1])/1024/1024))}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: each rule must have a pattern or an action part
awk: cmd. line:1: /^e/ {i++; rx[i]=$2}; tx[i]=$10}; END{printf(" down: %.2f Mbps, up: %.2f Mbps", ((rx[2]-rx[1])/1024/1024)), ((tx[2]-tx[1])/1024/1024))}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: /^e/ {i++; rx[i]=$2}; tx[i]=$10}; END{printf(" down: %.2f Mbps, up: %.2f Mbps", ((rx[2]-rx[1])/1024/1024)), ((tx[2]-tx[1])/1024/1024))}
awk: cmd. line:1: ^ syntax error我试图用sprintf来解决这个问题,但结果是一样的。
操作系统:Linux4.0.5-1-ARCH x86_64 GNU/Linux
awk:GNU 4.1.3,API: 1.1 (GNUMPFR3.1.2-p11,GNU 6.0.0)
发布于 2015-06-18 00:06:31
这些错误,正如awk所帮助的(尽管是冗长的)告诉您。
awk: cmd. line:1: /^e/ {i++; rx[i]=$2}; tx[i]=$10}; END{printf(" down: %.2f Mbps, up: %.2f Mbps", ((rx[2]-rx[1])/1024/1024)), ((tx[2]-tx[1])/1024/1024))}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: each rule must have a pattern or an action part
awk: cmd. line:1: /^e/ {i++; rx[i]=$2}; tx[i]=$10}; END{printf(" down: %.2f Mbps, up: %.2f Mbps", ((rx[2]-rx[1])/1024/1024)), ((tx[2]-tx[1])/1024/1024))}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: /^e/ {i++; rx[i]=$2}; tx[i]=$10}; END{printf(" down: %.2f Mbps, up: %.2f Mbps", ((rx[2]-rx[1])/1024/1024)), ((tx[2]-tx[1])/1024/1024))}
awk: cmd. line:1: ^ syntax error关闭}是因为您在此之前已经关闭了rx[i]=$2};的操作块,而,和最终的)是因为printf调用已经关闭了。完整的函数调用如下:
printf(" down: %.2f Mbps, up: %.2f Mbps", ((rx[2]-rx[1])/1024/1024))所以,及其后面的所有内容都是语法错误,因为它本身不是一个有效的语句。
https://stackoverflow.com/questions/30904208
复制相似问题