我想在awk中编写一个简单的脚本,但是我得到了奇怪的结果,无法理解为什么。无法找到在手册或网页的任何线索:gawk中的字符串串联会产生意想不到的结果
这里的输入文件:
# 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
您的预期成果是什么?请注意,你正在粘贴一个长长的命令,并问为什么它会产生一些东西,而没有给出它所要做的事情。请[编辑]您的问题以包含相关的详细信息。 – fedorqui
也是,因为你使用'split()'两次,考虑设置一个不同的FS去除其中的一个。 – fedorqui
我的'GNU Awk 4.1.3'正常返回预期的结果。也许你有一些不好的结局?执行'cat -vevet file'来查看文件中是否有内容被破坏。 – fedorqui