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

319
Visualizações
Vim: s reemplaza ocurrencias específicas de N < g en una línea

intento usar una coma (,) para separar los miles en los dos primeros campos numéricos usando vim command

 %s/\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\);/\1,\2\3\4;/g

pero en este caso agregará una coma también a 9,995 en la segunda línea, ¿qué puedo usar para reemplazar ocurrencias específicas de N <g?

aporte

 BitstreamCyberCJK;Freeware;30275;28686;v2.0 ;beta (1998-03-17) Y.OzFontN;Freeware;21957;7621;v13.00 sfnt rev 9995; Pen-Ji (2010-08-24)

Rendimiento esperado

 BitstreamCyberCJK;Freeware;30,275;28,686;v2.0 ;beta (1998-03-17) Y.OzFontN;Freeware;21,957;7,621;v13.00 sfnt rev 9995; Pen-Ji (2010-08-24)
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Hay una forma de repetir el último comando: @: también puede especificar el número de repeticiones, por ejemplo: 10@: .

Entonces, comience reemplazando solo la primera coincidencia: %s/\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\);/\1,\2\3\4;/

Luego, como ya hemos hecho uno de N sustitución, repítelo N-1 veces.

Por ejemplo, para reemplazar los primeros 10 números, use:

 %s/\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\);/\1,\2\3\4;/ 9@:
over 4 years ago · Santiago Trujillo Relatório

0

Yo usaría un patrón de búsqueda más corto y manejable:

 :%s/\(\d\)\(\d\{3}\);/\1,\2;/g

Luego, dejaría caer el indicador /g para sustituir solo la primera coincidencia en cada línea, ya que el objetivo específico es no sustituir todas las coincidencias en todas las líneas:

 :%s/\(\d\)\(\d\{3}\);/\1,\2;

Luego, repetiría la última sustitución en cada línea:

 g&

Consulte :help \d , :help \{ , :help :s_flags y :help g& .

over 4 years ago · Santiago Trujillo Relatório

0

En primer lugar, le aconsejaría que limpie su expresión regular:

 :%s/\([0-9]\)\([0-9]\{3}\);/\1,\2;/g

En segundo lugar, la bandera g al final hace que vim reemplace todas las apariciones. Sin la bandera, solo reemplazará a la primera. Dado que % ejecuta la sustitución en cada línea, %s//g reemplazará la primera aparición en cada línea.

Como desea reemplazar las DOS primeras ocurrencias, puede ejecutarlo dos veces. Sin embargo, queremos ser un poco elegantes aquí. Existe el comando :& para repetir la última sustitución. Incluso podemos encadenarlos juntos:

 :%s/\([0-9]\)\([0-9]\{3}\);/\1,\2;/ | norm %&

Actualización: las otras soluciones se pueden usar de la misma manera:

 :%s/\([0-9]\)\([0-9]\{3}\);/\1,\2;/ | norm g&

o

 :%s/\([0-9]\)\([0-9]\{3}\);/\1,\2;/ | norm :@
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