对于printaccounting我使用的是Tea4Cups。在/etc/cups/tea4cups.conf中我有一行:
echo `pkpgcounter -ccmyk $TEADATAFILE` |sed 's/C\ \://g'|sed 's/M\ \://g'|sed 's/Y\ \://g'|sed 's/K\ \://g'|sed 's/\%/;/g'|sed 's/\./,/g' >>/var/log/accounting_ink.csv
pkpgcounter -ccmyk $TEADATAFILE
输出如下:
C : 4.732829% M : 4.716022% Y : 3.545420% K : 0.000000%
C : 4.753109% M : 4.736302% Y : 3.560630% K : 0.000000%
C : 4.760295% M : 4.743488% Y : 3.566019% K : 0.000000%
文件的页面越多,命令输出的输出就越多。 sed剥离非数字字符的输出并将其转换为以下内容:
3,699918; 3,285596; 2,983343; 4,169371; 1,596966; 1,635378; 1,621895; 1,306214;
现在我需要为C添加每个值;为M; Y和B可以了解打印作业的墨粉/墨水使用情况。 所以价值1和5;值2和6等。但也许第一步是确定值的总数?
答案 0 :(得分:1)
当你使用awk时你永远不需要sed所以你的sed命令的中间输出对此没用,我们只需要你pkpgcounter
的原始输出。
你没有显示你的预期输出,所以这是猜测,但这是你想要做的吗?
$ cat file
C : 4.732829% M : 4.716022% Y : 3.545420% K : 0.000000%
C : 4.753109% M : 4.736302% Y : 3.560630% K : 0.000000%
C : 4.760295% M : 4.743488% Y : 3.566019% K : 0.000000%
$ cat tst.awk
{
for (i=1; i<NF; i+=3) {
val[i] = $i
sum[i] += $(i+2)
}
}
END {
for (i=1; i<NF; i+=3) {
printf "%s%s: %s", (i>1?OFS:""), val[i], sum[i]
}
print ""
}
$ awk -f tst.awk file
C: 14.2462 M: 14.1958 Y: 10.6721 K: 0
答案 1 :(得分:0)
在GNU awk(multichar RS
)中,file
具有pkpgcounter
的输出:
$ awk 'BEGIN{RS="%"RS"?"}{a[$1]+=$NF}END{for(i in a)print i, a[i]}' file
C 14.2462
K 0
Y 10.6721
M 14.1958
您可以将输出传输到awk,而不是使用file
作为源。
编辑:单线打印版本,根据要求提供:
$ awk 'BEGIN{RS="%"RS"?"}{a[$1]+=$NF}END{for(i in a)printf "%s: %s ", i, a[i];print ""}' file
C: 14.2462 K: 0 Y: 10.6721 M: 14.1958
编辑2 :单行打印,从第一条记录中选择输出顺序:
$ awk '
BEGIN { RS="%"RS"?" } # set RS
NR<=4 { b[NR]=$1 } # store original order to b
{ a[$1]+=$NF } # sum
END { for(i=1;i<=4;i++) # respect the original order
printf "%s: %s ", b[i], a[b[i]] # output
print "" # finishing touch
}' file
C: 14.2462 M: 14.1958 Y: 10.6721 K: 0
答案 2 :(得分:0)
您可以使用awk
echo `pkpgcounter -ccmyk $TEADATAFILE` |
awk '{c+=$3;m+=$6;y+=$9;k+=$12}{print}END{printf "C : %.5f%% M:%.5f%% Y:%.5f%% K:%.5f%%",c,m,y,k; print ""}'
C : 4.732829% M : 4.716022% Y : 3.545420% K : 0.000000%
C : 4.753109% M : 4.736302% Y : 3.560630% K : 0.000000%
C : 4.760295% M : 4.743488% Y : 3.566019% K : 0.000000%
C : 14.24623% M:14.19581% Y:10.67207% K:0.00000%