¿Cómo eliminar nombres de usuario duplicados antes de un divisor de líneas?

¿Cómo eliminar nombres de usuario duplicados antes de un divisor de líneas?

Quiero eliminar los nombres de usuario duplicados en las líneas anteriores al divisor y conservar solo la primera línea de estos nombres de usuario.

Ejemplo de líneas:

zzzz:000000zl
zzzz:000000zl!
zzzz:000000zl1
zzzz:000000zl123
zzzz:000000zl69
zzzz:000000zl?
AdSFF12:Sample198445
AdSFF12:Sample198445!
AdSFF12:Sample198445#
AdSFF12:Sample198445$
AdSFF12:Sample1984456
TestOf13:Smpletest1211
TestOf13:Smpletest1211!
TestOf13:Smpletest1211#
TestOf13:Smpletest1211$
TestOf13:Smpletest12112
TestOf13:Smpletest561
TestOf13:Smpletest561!
TestOf13:Smpletest561#
TestOf13:Smpletest561$
TestOf13:Smpletest5612
TestOf13:SmpletestZ2
TestOf13:SmpletestZ2!
TestOf13:SmpletestZ2#
TestOf13:SmpletestZ2$
TestOf13:SmpletestZ23
TestOf13:Smpletestz3qwe
TestOf13:Smpletestz3qwe!
TestOf13:Smpletestz3qwe1
TestOf13:Smpletestz3qwe123
TestOf13:Smpletestz3qwe69
TestOf13:Smpletestz3qwe?

Resultado necesario:

zzzz:000000zl
AdSFF12:Sample198445
TestOf13:Smpletest1211

Tu ayuda será muy apreciada, gracias de antemano <3.

Respuesta1

  • Ctrl+H
  • Encontrar que:^((.*?:).+\R)(\2.+\R)+
  • Reemplazar con:$1
  • CONTROLAR Envolver alrededor
  • CONTROLAR Expresión regular
  • DESMARCAR . matches newline
  • Replace all

Explicación:

^       # beginning of line
    (       # start group 1
        (       # start group 2
            .*?     # 0 or more any character but newline, not greedy
            :       # a colon
        )       # end group 2
        .+      # 0 or more any character but newline
        \R      # any kind of linebreak (i.e. \r, \n, \r\n)
    )       # end group 1
    (       # group 3, you can use (?: for non capture group
        \2      # back reference to group 2 (i.e. the part before the colon)
        .+      # 0 or more any character but newline
        \R      # any kind of linebreak (i.e. \r, \n, \r\n)
    )+      # end of group 3, may appear 0 or more times

Reemplazo:

$1          # content of group 1, the value of the first line

Captura de pantalla (antes):

ingrese la descripción de la imagen aquí

Captura de pantalla (después):

ingrese la descripción de la imagen aquí

información relacionada