Como excluir o primeiro valor e a vírgula final da 7ª coluna em um arquivo csv

2

Estou tentando remover o primeiro valor da 31ª coluna em um arquivo csv. As colunas estão entre aspas e separadas por vírgulas assim.

"first_name","last_name","home_address"
"Frank",Russel","123 Hampton road"

a 31ª coluna é a coluna da imagem e as imagens são separadas por vírgulas

"http://ddd.com/124dfr3f.jpg,http://ddd.com/hjasgx37trg.jpg"

A primeira vírgula de imagem e rejeição deve ser removida da 31ª coluna

Adicionado - Aqui está um exemplo.

"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","three","four","five","six","seven","eight","nine","ten","twenty-one","twenty-two","three","four","five","six","seven","eight","nine","ten","thirty-one","thirty-two","three","four","five","six","seven","eight","nine","forty"
"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","three","four","five","six","seven","eight","nine","ten","twenty-one","twenty-two","three","four","five","six","seven","eight","nine","http://pictures.domain.com/e/josequervo/1183/eeeffcc7927sssssssssss5d26c0eb19e1dc53548x.jpg","http://pictures.domain.com/e/josequervo/0083/eeef8cc7927bf1245d26c0eb19e1dc53545x.jpg,http://pictures.domain.com/e/josequervo/0099/eeefscc7927bf1245d26c0eb19e1dc53546x.jpg,http://pictures.domain.com/e/josequervo/0012/eeefdcc7927bf1245d26c0eb19e1dc53547x.jpg,http://pictures.domain.com/e/josequervo/1183/eeeffcc7927bf1245d26c0eb19e1dc53548x.jpg,http://pictures.domain.com/e/josequervo/1234/eeefgcc7927bf1245d26c0eb19e1dc53549x.jpg,http://pictures.domain.com/e/josequervo/asee/eeefhcc7927bf1245d26c0eb19e1dc53540x.jpg,http://pictures.domain.com/e/josequervo/2341/eeefjcc7927bf1245d26c0eb19e1dc53544x.jpg","two",three","four","five","six","seven","eight","nine","forty"

Este URL e vírgula devem ser removidos

http://pictures.domain.com/e/josequervo/0083/eeef8cc7927bf1245d26c0eb19e1dc53545x.jpg,

Eu só postei as 2 primeiras linhas do arquivo csv, mas o arquivo tem 300 - 400 linhas e esta imagem tem que ser removida da linha 2 para a última linha. Não podemos alterar a primeira linha.

    
por needtoknow 16.06.2018 / 03:49

2 respostas

2

Usando o GNU sed , podemos abordar isso como mostrado:

sed -e '
     s/","/&\n/30
     s/\n[^,]*,//
' file.csv

Para ser entendido como:

  • Coloque um marcador na 30ª ocorrência da string "," na linha atual.

  • Em seguida, indo direto do espaço reservado até a primeira vírgula, excluímos tudo ao longo do caminho.

Outro método é dado da seguinte forma:

 perl -F'/","/' -lane 'my $i;
      print join q[","], map { $i++ == 30 ? substr($_, 1+index($_, ",")) : $_ } @F;
 ' input-file.csv

Método:

  • perl lerá o arquivo csv linha por linha, e para cada linha ele deverá dividi-lo em torno da string "," e armazenar os elementos da divisão na matriz @F.

  • Em seguida, para o 31º elemento, removemos tudo até a primeira vírgula.

por 16.06.2018 / 04:48
0

De acordo com a sua pergunta entendida imagem exsists na 31 ª coluna separada por vírgula e precisamos remover o primeiro caractere da 31 ª coluna

awk -F "," '{$31=substr($31,2);print $0}' file.csv

Testado e funcionando bem Deixe-nos saber sobre qualquer confusão

    
por 16.06.2018 / 05:51