como obter linhas que de enésima a més colunas estão vazias

0

Eu tenho um arquivo csv com esta aparência:

aaa,vvv,,,,
bbb,qqq,,,vvv,
ccc,www,iii,,,kkk
ddd,rrr,,,lll,
eee,ttt,ooo,sss,ggg,jjj
fff,yyy,ppp,,,

Eu quero obter as linhas que as colunas de enésima a més estão vazias (neste exemplo: obter linhas de 3 a 4 estão vazias)

e, em seguida, obter a saída da seguinte forma

bbb,qqq,,,vvv,
ddd,rrr,,,lll,

Na verdade, quero obter apenas as linhas que as colunas de intervalo específico estão vazias por exemplo com o awk

awk -F, '$n-$m=="" {print}' file.csv
awk -F, '$3-$4=="" {print}' file.csv
    
por alrz 21.12.2016 / 10:39

2 respostas

0

Um caminho:

awk -F, -v st=3 -v end=4 '{for(i=st;i<=end;i++){if($i){next;}}}1' file
    
por 21.12.2016 / 10:45
0

A solução awk de @Guru é provavelmente muito mais portátil do que isso, mas usando grep para este exemplo específico :

egrep '^[a-z]*,[a-z]*,{3}[a-z]' csv 
bbb,qqq,,,vvv,
ddd,rrr,,,lll,

Onde csv é este arquivo:

cat csv
aaa,vvv,,,,
bbb,qqq,,,vvv,
ccc,www,iii,,,kkk
ddd,rrr,,,lll,
eee,ttt,ooo,sss,ggg,jjj
fff,yyy,ppp,,,
grep --version
grep (BSD grep) 2.5.1-FreeBSD
    
por 21.12.2016 / 11:16