para remover a coluna
c.awk:
{ for(i=1;i<=NF;i++) { line[NR][i]=$i ; col[i]+=$i ;} }
END {
for ( l=1 ; l<=NR ; l++ )
{
printf line[l][1] "\t" ;
for (c=2;c<=NF;c++) if (col[c]) printf line[l][c] "\t" ;
printf "\n" ;
}
}
onde
-
{ for(i=1;i<=NF;i++) { line[NR][i]=$i ; col[i]+=$i ;} }
armazena toda a linha (incluindo nomes de col). -
END
cláusula print all column if count! = 0. - cuidado para que todos os dados sejam mantidos na memória.
teste:
awk -f c.awk a
a b c
e 1 2
f 3 4
g 5 6
para solução de linha ...
tente
awk 'NR==1 {print } NR>1 { s=0 ; for(i=1;i<=NF;i++) s+=$i ; if (s) print ;}'
onde
-
NR==1 {print }
cabeçalho de impressão -
NR>1 { s=0 ; for(i=1;i<=NF;i++) s+=$i ; if (s) print ;}
teste para 0 e imprime se não - você pode começar com
i=2
se a primeira coluna for o nome da linha. - cuidado com números de ponto flutuante, eles podem não somar 0.
observe que isso gerará linhas, e não excluirá do arquivo original.