gawk 中的字符串连接产生意外结果
String concatenation in gawk produces an unexpected result
我正在尝试用 awk 编写一个简单的脚本,但我得到了奇怪的结果并且不明白为什么。在手册或网络中找不到任何线索:
这是输入文件:
# Keyspace
db0:keys=14,expires=4,avg_ttl=454226332
这是命令
gawk -F : '/^db/ { split(, keys, ","); for(i in keys) { k = gensub("=", ":", "g", keys[i]); print ("redis." "." 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
您的输入文件在每一行的末尾都有一个 control-M,使用 cat -v
查看它并使用 dos2unix
或类似的方法删除它们。
到目前为止,这一定是我们收到的最常见的问题....希望我们可以对问题提出一些 "run cat -v file
and look for ^M
s before posting" 要求!
我正在尝试用 awk 编写一个简单的脚本,但我得到了奇怪的结果并且不明白为什么。在手册或网络中找不到任何线索:
这是输入文件:
# Keyspace
db0:keys=14,expires=4,avg_ttl=454226332
这是命令
gawk -F : '/^db/ { split(, keys, ","); for(i in keys) { k = gensub("=", ":", "g", keys[i]); print ("redis." "." 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
您的输入文件在每一行的末尾都有一个 control-M,使用 cat -v
查看它并使用 dos2unix
或类似的方法删除它们。
到目前为止,这一定是我们收到的最常见的问题....希望我们可以对问题提出一些 "run cat -v file
and look for ^M
s before posting" 要求!