Como substituir linhas que nth para mth colunas deles estão vazios usando sed ou awk baseado com o comando run

0

Eu tenho um arquivo csv com esta aparência:

site1.com,aaa,bbb,ccc
site2.com,qqq
site3.com,rrr,uuu,ppp
site4.com,ddd,sss
site5.com,www,rrr,yyy,uuu
site6.com,,,,ttt,,,,
site7.com,,,uuuu,,,,ppp,
site8.com,,,,ggg,zzz

Eu quero substituir linhas (linhas) onde as colunas de enésimo a quarto (2ª a 4ª) estão vazias. e eu quero manipular as linhas, executando um comando sobre elas. Por exemplo, com awk:

awk -F, '$n-$m=="" {printf "%s,",$1 ; system(cmd1) ;}else {print $0}' test.csv
awk -F, '$2-$4=="" {printf "%s,",$1 ; system(cmd1) ;}else {print $0}' test.csv

Eu, então, quero exportar da seguinte maneira (output1 é resultado do comando cmd1):

site1.com,aaa,bbb,ccc
site2.com,qqq
site3.com,rrr,uuu,ppp
site4.com,ddd,sss
site5.com,www,rrr,yyy,uuu
site6.com,output1
site7.com,,,uuuu,,,,ppp,
site8.com,output1
    
por alrz 03.01.2017 / 11:17

1 resposta

0

Como você deseja apenas três colunas, faça isso com:

awk -F, '{
            if($2=="" && $3==$2 && $3==$4){
                printf "%s,",$1; 
                system("CMD")
            }
            else{print}
          }' test.csv 
    
por 03.01.2017 / 14:23