1 votos

¿Cómo agregar un símbolo al comienzo de cada línea que * no * comience con [término1] o [término2]?

Estoy formateando algunos registros de chat y me gustaría agregar || antes de cada línea que comience con cualquier cosa excepto cualquiera de los nombres de los participantes.

Ejemplo:

 Bob: hi
hey
Martha: yeah hi
 

Quiero añadir || antes de la segunda línea, haciendo que se vea así:

 Bob: hi
||hey
Martha: yeah hi
 

¿Hay alguna forma en que pueda hacer esto para el documento completo de más de 30,000 líneas utilizando buscar y reemplazar?

1voto

Toto Puntos 294

Escribir según comentario

  • Ctrl+H
  • Qué buscar: ^(?![^|\r\n]+\|)
  • Reemplazar con: ||
  • compruebe Envoltura alrededor de
  • verificación de la expresión Regular
  • Reemplazar todos

Explicación:

^              # beginning of line
  (?!          # negative lookahead, make sure we haven't after:
    [^|\r\n]+  # 1 or more any character that is not pipe or linebreak
    \|         # a pipe
  )            # end lookahead

Reemplazo:

||          # double pipe

Dado:

Bob Stewart|1494043962207|hi
hey
Martha|1494044016655|yeah hi

El resultado para el ejemplo dado:

Bob Stewart|1494043962207|hi
||hey
Martha|1494044016655|yeah hi

Captura De Pantalla

enter image description here

0voto

Seth Puntos 672

Use una expresión regular ^(Bob|Martha).*$ y reemplácela con $0\r\n|| después, reemplace el ||\r\n (como reemplazo extendido) con solo || . Probablemente puedas hacer esto en un solo paso también.

Esto no funcionará para las siguientes líneas. Así por ejemplo:

 Bob: Hi,
are you there?
I only need minute!
 

Solo pondría el || En frente de la segunda línea. Construir una negación puede ser bastante difícil.

0voto

Romeo Ninov Puntos 1089

Suponiendo que siempre la primera palabra contenga : , puede usar algo como:

 awk '$1!~":"{printf "||"} {print}' filename
 

0voto

BecauseICanTBH Puntos 11

Debería haber sido más preciso sobre cómo se formatea ahora en mi ejemplo.

Bob | 1494043962207 | hola hola Martha | 1494044016655 | sí hola

Así es como se ve ahora. Intenté modificar tu método para que funcionara, pero no lo conseguí. ¿Qué es exactamente lo que necesito cambiar?

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: