很抱歉,如果问题有点傻,请见谅,因为我对awk脚本完全不了解。 我的目的是计算和打印用户“root”的CPU和内存使用情况。 我编写了这个Bash脚本来执行一个awk脚本:
#!/bin/bash
ps aux > processi.txt
echo Lancio script3.awk
awk -f script3.awk processi.txt
以下是 awk 脚本:
#!/usr/bin/awk
BEGIN{
print "Inizio script\n"
cpu=0
mem=0
}
/root/{
printf("Cpu usata da root loop=%.1f, memoria=%.1f\n",$3,$4)
cpu=cpu+$3
mem=mem+$4
}
END{
printf("Cpu usata da root=%.1f, memoria=%.1f\n",$cpu,$mem)
print "\nFine script\n"
}
但是END
的打印结果是0
,而在/root/
目录下是正确的。有什么建议吗?
END
块内几乎没有用处。但同意,对于预期的用途它不能被使用。 - chepnercpu=3
时,如您所述$cpu
=$3
,但在每个 awk 中,END 部分中$3
的值可能是最后读取记录的第三个字段的值,也可能是 NULL 字符串或其他任何值。 POSIX 在关于最后读取的记录的值方面规定的唯一事情是NF
应该是该记录中字段的数量,但每个 awk 决定 $0、$1 等应包含什么,有些选择 NULL。 - Ed Morton