extrai linhas de acordo com uma coluna em particular

6

Eu tenho um arquivo CSV como

CK,ck
XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs
LMN,lmn,
IJK,ijk,

Eu tenho que verificar se algo está escrito na coluna 3, exceto espaço em branco, em seguida, exibir toda a linha. A saída será:

XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs
    
por mahima 04.09.2014 / 18:00

4 respostas

7

Uma abordagem sed :

sed -n '/[^,]*,[^,]*,[^, ]\+/p' file

Ou uma grep solution:

grep -oE '^[^,]*,[^,]*,[^, ]+' file

e awk :

awk -F, '$3 ~ /[^, ]+/' file
    
por 04.09.2014 / 18:53
4

Tente:

$ awk -F, '$3 && $3 != " "' file
XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs

ou:

$ awk -F, '$3 ~ /[^[:blank:]]/' file
    
por 04.09.2014 / 18:26
3

Você poderia fazer algo assim no awk:

awk -F',' '{gsub(/[ \t]+$/,"",$3)}$3' foo.csv

Isso removerá os espaços em branco finais e só imprimirá se ainda houver algo no terceiro campo.

Espero que isso ajude.

    
por 04.09.2014 / 18:20
1

Usando o GNU awk :

awk -F, '$3' input_file
    
por 04.09.2014 / 23:34