Sim, awk -v c=2 '{ print $0/c }' test_1
imprimiria apenas a primeira coluna, pois tentaria dividir cada linha completa com c
. A conversão da linha em um único número joga fora tudo o que não é um número, ou seja, o primeiro espaço em branco e tudo depois dele.
Em vez disso, você precisa fazer um loop pelas colunas:
awk -v c=2 '{ for (i = 1; i <= NF; ++i) $i /= c; print }' OFS='\t' test_1
Esse código simplesmente define o valor de cada coluna para si mesmo dividido por c
e, em seguida, imprime a linha com os valores modificados. NF
é o número de campos (colunas) na linha atual e $i
será o valor na coluna i
. O OFS='\t'
no final define o separador do campo de saída como um caractere de tabulação.
O resultado para os dados fornecidos será
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
8 10 12 10 10 5 3 14 18 5 13 7 12 12 12 15 12 15 12
1 4 1 2 1 0 0 5 4 1 3 0 3 2 2 3 1 5 1
7 6 11 8 9 5 3 10 14 4 10 7 9 10 10 12 11 10 11
0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0
8 10 12 10 10 5 3 15 18 5 13 7 12 12 12 14 11 15 12
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0