Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

179
Visualizações
Reemplazar líneas incorrectas en csv

Tengo un archivo csv como ese:

 0;test1;description;toto 1;test2;description;tata 2;test3;desc ription;tutu 3;test4;description;tete

En Shell, me gustaría reemplazar toda la línea que no comienza con un número. En este ejemplo, quiero reemplazar \nription por ription

No encuentro la expresión correcta con sed, grep... :(

Quiero este resultado:

 0;test1;description;toto 1;test2;description;tata 2;test3;description;tutu 3;test4;description;tete

Muchas gracias

EDIT 1: He intentado algo como esto:

 LC_ALL=C tr '(\n)[0-9]' ' ' < hotels.csv > test.csv

O esto :

 sed ':a;N;$!ba;s/\r\n?![0-ç-9]/ /g' hotels.csv

Pero creo que mi expresión regular está mal y no funciona :(

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Con awk esto parece factible:

 awk -F ';' '{if (NR>1 && match($1,/^[0-9]+$/)) printf("\n"); printf("%s",$0);} END{printf("\n")}' infile.csv

Que hace:

  • desde la segunda línea: verifique si el primer campo es un número e imprima una nueva línea
  • en cualquier línea: imprima la línea completa ( $0 ) sin salto de línea final

La salida se envía a STDOUT , la entrada proviene de infile.csv

EDITAR: Lo siento, no pude copiar el partido (...)

over 4 years ago · Santiago Trujillo Relatório

0

Usando grep -P

 grep -P "^\d" file.csv

Use grep para hacer coincidir las líneas que comienzan con un dígito.

over 4 years ago · Santiago Trujillo Relatório

0

debido a las peculiaridades del procesamiento del espacio de patrones de sed , tendrá que usar algo como esto...

Nota: ~ debe ser un carácter que no esté presente en su texto

 $cat file 0;test1;description;toto 1;test2;description;tata 2;test3;desc ription;tutu 3;test4;description;tete $ sed 'N;s/\n/~/' file | sed -r 's/~([0-9])/\n\1/g;s/~//g' 0;test1;description;toto 1;test2;description;tata 2;test3;description;tutu 3;test4;description;tete

PD: si su archivo de entrada tiene finales de línea de Windows, deberá usar \r\n en lugar de \n

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda