Alinhamento e detecção de campo numérico podem ser obtidos pelo seguinte programa simples awk
.
{
width=10;
separator="|";
for (i=1; i<=NF; i++) {
if (match($i, /[-+]*[0-9]+[\.]*[0-9]*/)) {
printf("%"width"s", $i);
}
else {
printf("%-"width"s", $i);
}
if (i == NF) printf("\n");
else printf("%s", separator);
}
}
Salve como column.awk
.
Para testar como funciona, tente o seguinte:
echo "abc -1.2 def 2 3 hij" | awk -f column.awk
A saída é:
abc | -1.2|def | 2| 3|hij
Existem dois parâmetros ajustáveis dentro do script .awk
:
- width: o campo padrão com (usado para alinhamento)
- separador: usado para separar colunas de saída