【发布时间】:2017-04-13 22:44:07
【问题描述】:
我正在尝试在 awk 中编写一个简单的脚本,但我得到了奇怪的结果并且不明白为什么。在手册或网络上找不到任何线索:
这是输入文件:
# Keyspace
db0:keys=14,expires=4,avg_ttl=454226332
这是命令
gawk -F : '/^db/ { split($2, keys, ","); for(i in keys) { k = gensub("=", ":", "g", keys[i]); print ("redis." $1 "." k "Z")} }'
结果如下:
redis.db0.keys:14Z
redis.db0.expires:4Z
Zedis.db0.avg_ttl:454226332
为什么最后一行末尾没有“Z”?不管我使用 gawk 还是 awk (Mac)。
预期结果是:
redis.db0.keys:14Z
redis.db0.expires:4Z
redis.db0.avg_ttl:454226332Z
【问题讨论】:
-
您的预期结果是什么?请注意,您正在粘贴一个长命令并询问它为什么会产生某些东西,而没有给出任何提示应该做什么。请edit您的问题包括这些相关细节。
-
另外,由于您使用了两次
split(),请考虑设置不同的 FS 以摆脱其中一个。 -
我的
GNU Awk 4.1.3正常返回预期结果。也许你有一些不好的结局?执行cat -vet file以查看文件中是否有问题。 -
不错! :) 所以我投票结束这个问题,因为 这个问题是由无法再复制的问题或简单的印刷错误引起的。
-
@fedorqui 感谢伙伴的帮助!