Uma abordagem sed
:
sed -n '/[^,]*,[^,]*,[^, ]\+/p' file
Ou uma grep
solution:
grep -oE '^[^,]*,[^,]*,[^, ]+' file
e awk
:
awk -F, '$3 ~ /[^, ]+/' file
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
Uma abordagem sed
:
sed -n '/[^,]*,[^,]*,[^, ]\+/p' file
Ou uma grep
solution:
grep -oE '^[^,]*,[^,]*,[^, ]+' file
e awk
:
awk -F, '$3 ~ /[^, ]+/' file
Tente:
$ awk -F, '$3 && $3 != " "' file
XYZ,xyz,xyzs
ABC,abc,abcs
PQR,pqr,pqrs
ou:
$ awk -F, '$3 ~ /[^[:blank:]]/' file
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.
Usando o GNU awk
:
awk -F, '$3' input_file
Tags grep awk sed shell-script