我有一个文件:
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相同的结果?
答案 0 :(得分:11)
恕我直言,格式化字符串%-s
没有正确的结果,因为对齐字符串而不指定对齐它的宽度是没有意义的。关于length
对它自己的含义也有不同的解释 - 它可能是length($0)
的简写,或者它可能是非POSIX awk中的其他东西,甚至可能没有长度函数一些非POSIX awk因此可能将其作为未定义的变量名称。任何给定的awk如何处理非英文字符?
正如我所说 - 如果你打算使用非POSIX awk,你需要查看手册以获取所有血腥细节......
答案 1 :(得分:0)
我假设您正在使用不同的系统...因为系统上的awk安装用作gawk或mawk的符号链接。
只要版本重合,所有awk版本都是兼容的。
因此,我认为您面临的问题是由于使用了较旧版本和较新版本的程序。