Semelhante a minha resposta recente , mas aqui precisamos verificar se o valor do campo é igual a 0.0
e contar a coluna e as linhas em uma matriz separada em vez de sum-up, então:
awk '{
for (i=1; i<=NF; i++) {
if ($i=="0.0") { zero_in_column[i]+= 1 ; zero_in_row[NR]+= 1 }; }
}
END { for (X in zero_in_row)
print "in_row:"X, zero_in_row[X], "in_column:" X, zero_in_column[X]
}' OFS='\t' infile
Observação: substitua zero_in_row
array por zero_in_column
em END { for (X in zero_in_row)
if number_of_column > number_of_rows.
para a entrada como abaixo ( e eu tive END { for (X in zero_in_column)
, pois minha contagem de colunas é maior que a contagem de linhas ):
1 0.0 3 0.0 4 0.0 0.0
3 4 5 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0
A saída é:
in_row:1 4 in_column:1 1
in_row:2 4 in_column:2 2
in_row:3 7 in_column:3 1
in_row:4 in_column:4 3
in_row:5 in_column:5 2
in_row:6 in_column:6 3
in_row:7 in_column:7 3