我有一个文件:
To jest długi string z wieloma polskimi literami ąółżęś kodowany w UTF8,
żeby
było śmieszniej, haha.
ą
a
gawk 示例:
gawk '{printf "%-80s %-s\n", $0, length}' file
在 gawk 中,我得到了正确的结果:
To jest długi string z wieloma polskimi literami ąółżęś kodowany w UTF8, 73
żeby 5
było śmieszniej, haha. 22
ą 1
a 1
In gawk, I get the correct result:
<小时/>mawk 示例:
mawk '{printf "%-80s %-s\n", $0, length}' file
To jest długi string z wieloma polskimi literami ąółżęś kodowany w UTF8, 80
żeby 6
było śmieszniej, haha. 24
ą 2
a 1
In mawk, I get the incorrect result:
mawk 得到的结果与 gawk 相同吗?
最佳答案
mawk 是一个功能最少的 awk,其设计目的是为了执行速度而不是功能。您不应期望它的行为与 gawk 或 POSIX awk 完全相同。如果您要使用 mawk,您需要获得 mawk manual 描述 IT 行为方式,请勿依赖任何其他描述其他 awks 行为方式的文档。
恕我直言,格式化字符串 %-s
没有正确的结果,因为在不指定对齐宽度的情况下对齐字符串是没有意义的。对于 length
本身的含义也有不同的解释 - 它可能是 length($0)
的简写,也可能是非 POSIX awk 中的其他内容,在某些非 POSIX awk 中甚至可能没有长度函数,因此它可能会将其视为 undefined variable 名。任何给定的 awk 如何处理非英语字符?
正如我所说 - 如果您要使用非 POSIX awk,您需要查看该 awk 的手册以了解所有详细信息...
关于awk - gawk 和 mawk 的区别(列宽),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21289110/