Como faço para imprimir as entradas necessárias de um arquivo CSV em um novo arquivo e contar o número de entradas?

0

Eu tenho um arquivo CSV de uma tabela com algumas entradas em branco. Eu quero o meu código para olhar através de todas as entradas para cada linha (exceto o primeiro) e contar o número de entradas em branco > armazene as entradas em branco por linha e separe-as com uma vírgula em um arquivo chamado temp_file > então quero que o código conte o número de entradas em branco nesse arquivo e me dê um valor, por exemplo se for, então a saída deve ser 3.

Atualmente, isso é o que eu tenho:

sed 1d ${FILENAME} | while read ln

do

echo $ln | tail -1 PMRExceptions.csv | tr "," "\n" | grep -nx '^$' | cut -d":" -f1

PMRNUM=echo $ln | awk -F"," '{print $2}'

PMRMGR=echo $ln | awk -F"," '{print $3}'

COUNT=less $TEMPFILE | wc -l 

essa parte aqui deve contar o número de entradas em branco

while read line
do
columns='head -1 $FILENAME | awk -F"," -v ln=$line '{print $ln}''

O valor que recebo é 0, não importa o que eu mude. Eu acho que as entradas não estão sendo armazenadas no tempfile.

    
por infiniteoscillation 10.08.2018 / 10:45

1 resposta

1

Usando awk para contar o número de campos delimitados por vírgula em cada linha de entrada que estão vazios (excluindo a linha de cabeçalho):

awk -F ',' 'NR > 1 { c=0; for (i = 1; i <= NF; ++i) if ($i == "") ++c; print c }' file.csv

Isso pressupõe que nenhum campo contenha vírgulas incorporadas.

Exemplo:

$ cat file.csv
A,B,C
1,,0
all,bar,none
my,field,here
no,data,
$ awk -F ',' 'NR > 1 { c=0; for (i = 1; i <= NF; ++i) if ($i == "") ++c; print c }' file.csv
1
0
0
1

Relacionados:

por 10.08.2018 / 10:53