Imprime linhas em que uma coluna específica tem uma condição de comprimento

3

Estou analisando um arquivo csv muito grande, em que a entrada da coluna 26 tem que ser de tamanho 10. Posso ver que há casos em que não há entradas (o que é bom), mas também casos em que as entradas têm comprimento menor que 10 ou maior que 10, isso tem que ser errôneo. Estou tentando imprimir algumas dessas linhas para explorar.

Minha tentativa é:

awk 'length($26) < 10' my_file.csv | sort -u | cut -d ',' -f 26 | head

mas isso não retorna o resultado que eu quero - em vez disso, ele retorna um número de linhas em que o tamanho da coluna 26 é de fato igual a 10. O que estou fazendo errado?

    
por nvergos 25.01.2017 / 21:42

3 respostas

3

awk -F, 'length($26) != 10 { print }' /path/to/input > bad_field_length.txt
    
por 25.01.2017 / 22:10
1

Eu tentaria algo como:

awk -F "," 'length($26) != 10 {print $26}' my_file.csv

Então, se necessário, você ainda pode canalizar essa saída por meio de outros filtros que você possa precisar, como classificação etc.

Diz ao awk para delimitar colunas usando vírgulas:

-F ","

Se o comprimento da coluna 26 não for igual a 10, imprima a coluna 26

'length($26) != 10 {print $26}' 
    
por 25.01.2017 / 22:10
1
cat FileName|awk -F ',' 'length($3)<=9 {print $3}'|sort -u

Isso funcionou para mim. Onde $ 3 é a coluna na qual eu estava filtrando o registro, você poderia substituí-lo pela coluna de sua escolha. A classificação foi usada para classificar apenas os registros exclusivos.

    
por 21.12.2017 / 06:48

Tags