É legal imprimir bytes nulos usando a printf
função do awk de acordo com POSIX? O padrão POSIX deawk
não parece mencioná-lo explicitamente de qualquer maneira. As implementações do mundo real diferem em como elas se comportam:
+$ gawk 'BEGIN { x = sprintf("\000"); print(length(x)); }'
1
+$ busybox awk 'BEGIN { x = sprintf("\000"); print(length(x)); }'
0
+$
e
+$ gawk 'BEGIN { printf("\000"); }' | xxd
00000000: 00 .
+$ busybox awk 'BEGIN { printf("\000"); }' | xxd
+$
Isso está especificado em algum lugar no padrão? Se sim, o comportamento requerido para variáveis ( x = sprintf("\000")
) e printf ( printf("\000")
) é o mesmo?