¿Cómo puedo eliminar todo después de la primera columna en Notepad ++?

40

Estoy tratando de deshacerme de todo después de una columna en Notepad ++. El modo de columna no es una opción. ¿Es posible?

Lo que tengo:

70.97.110.40    159 ms          [n/a]                   21              
70.97.117.177   134 ms          [n/a]                   21              
70.97.120.10    75 ms           [n/a]                   21              
70.97.122.105   87 ms           www.portless.net        21              
70.97.122.106   89 ms           www.popovetsky.org      21              
70.97.122.107   95 ms           www.psmythe.net         21              
70.97.122.104   98 ms           wasabi.prostructure.com 21              
70.97.122.108   89 ms           crm.prostructure.com    21              
70.97.122.109   87 ms           internal.prostructure.com21 

Lo que quiero:

70.97.110.40
70.97.117.177
70.97.120.10
70.97.122.105
70.97.122.106
70.97.122.107
70.97.122.104
70.97.122.108
70.97.122.109
Bob J
fuente
2
¿Las columnas están separadas por tabuladores?
Excellll
3
Una pregunta más: ¿los datos que desea conservar alguna vez incluyen un espacio?
Excellll
1
no, solo necesito los ips
Bob J
20
¿Por qué quieres hacer eso en notepad ++? ¿Por qué el modo columna no es una opción?
Kamil
1
Puede usar el modo de columna para eliminar la segunda columna a la EOL, y luego usar Trim Trailing y guardar para eliminar el espacio en blanco.
Casey Kuball

Respuestas:

60

Si los datos en la primera columna nunca contienen un espacio, puede usar una expresión regular buscar y reemplazar para obtener lo que desea.

En el modo de expresión regular, busque:

^([^ ]*).*

Y reemplazar con

\1

Lo que esto hace:

^indica que cualquier coincidencia debe comenzar al comienzo de una línea.
([^ ]*)es cualquier expresión que no contiene un espacio. La coincidencia es codiciosa, por lo que coincidirá con todo hasta el primer espacio (o el final de la línea, lo que ocurra primero).
.*es todo lo demás en la línea.

\1se refiere a la parte de la coincidencia dentro de los paréntesis. Es decir, toda la línea se reemplaza solo por el bit de la primera columna.

Excellll
fuente
55
¡Es bueno saber que notepad ++ admite expresiones regulares en search-replace!
Kamil
1
Regex hará el trabajo por usted siempre que los datos nunca contengan un espacio. Más simple sería el comando 'cortar' de UNIX, pero hacer comandos de UNIX en Windows es otro problema. Se realiza un corte para esto y procesa archivos grandes rápidamente, con delimitadores de columna definidos o por recuento de caracteres.
Karl
31
Esto se puede hacer de manera mucho más simple: reemplace ". *" (Observe el espacio inicial) con "" (es decir, nada) para eliminar todo después e incluir el primer espacio.
Fraxtil
2
@Fraxtil Gracias. Deberías publicar eso como respuesta. Recibirás un voto positivo de mi parte.
Excellll
@Excellll bien, listo.
Fraxtil
99

Aquí hay una expresión regular más simple que puede usar para lograr el mismo efecto. Reemplazar

 .*

(tenga en cuenta el espacio inicial)

sin nada. Esto eliminará todo después e incluyendo el primer espacio. Esto funcionará siempre que sus direcciones IP nunca tengan el prefijo de ningún espacio en blanco (como es el caso en su ejemplo).

Fraxtil
fuente
8
Hombre, regex es pura magia. Creo que nunca lo asimilaré :)
Torben Gundtofte-Bruun
14
Asegúrese de que la bandera tenga. match newlines está desactivado.
Taemyr
3
En caso de que sea potencialmente una pestaña en lugar de un espacio, puede usar[ \t].*
Cornstalks
44
@Cornstalks \s.*es más corto. Tal vez incluso usar \s+.*, para que coincida con una cantidad arbitraria de espacios en blanco, ahora que estamos codificando a la defensiva .
Anko
1
@ jpmc26 siempre y cuando no digas "regex" y "simple" en una oración :)
Torben Gundtofte-Bruun
40

Si está utilizando Windows y no le importa los espacios finales (puede encontrarlos / reemplazarlos después), use la función Seleccionar bloque :

  1. Mantenga Altpresionada la tecla
  2. Con el mouse, seleccione la parte que desea eliminar (todo el bloque de texto)
  3. Suelta la Altllave
  4. Eliminar ese bloque de texto
  5. Repita según sea necesario
Reed Shilts
fuente
¿Se supone que esa es la tecla menos "-"?
Dracs
Lo siento, usé los corchetes LT y GT alrededor de la tecla 'alt' Corregido ahora.
Reed Shilts
10
Puede cambiarlo a <kdb> Alt </kbd> y lo formateará como una clave.
Dracs
He estado usando el Bloc de notas para siempre ... ¡y nunca supe que existía esta característica! 1 Bazillion +1 !!!!!
jmstoker
1
El OP dijo: "El modo de columna no es una opción"
Peter Mortensen
11

Una expresión regular es más rápida, pero puede hacer algunas cosas realmente difíciles con macros si es una tarea más complicada.

Podrías grabar una macro:

  1. Cursor en línea 1
  2. Pulsa Iniciar grabación
  3. Presione la tecla de inicio
  4. Mantenga Ctrlpresionada la tecla Right arrow(siete veces)
  5. Sostenga Shiftmientras presiona la teclaEnd
  6. Presione la tecla Delete
  7. Presione la tecla Down arrow
  8. Golpear Stop recording

Luego reprodúcelo:

  1. Presiona "Ejecutar una macro varias veces"
  2. Escriba las líneas del documento menos 1, ya que la primera línea está completa.
pyker
fuente
9

Coloque el cursor después 70.97.110.40.

Colocar cursor

Presione Alty arrastre el cursor hacia la derecha y hacia abajo para seleccionar la parte no deseada.

Seleccionar

Presione Backspaceo Delete.

Eliminar

Keshava GN
fuente
1
Todo este tiempo usando Notepad ++ y nunca supe que tenía un "Modo de selección de bloque" como TextPad.
Kev
@Kev: funciona de la misma manera en Visual Studio.
Peter Mortensen el
1
El OP dijo: "El modo de columna no es una opción"
Peter Mortensen
@PeterMortensen - re: VS - hell, he estado usando eso desde 2002 y ¡ni siquiera lo sabía!
Kev
8

Aquí hay un par de métodos alternativos a la respuesta dada.

Si sus datos son fixed width, también puede usar la siguiente expresión regular en la búsqueda:

Encontrar que: ^(.{16}).*$

Reemplazar con: \1

Es genial si los datos que desea conservar contienen un espacio, como alguien mencionó. Además, de nuevo para datos de ancho fijo, puede usar Column Mode Editing. Es una pequeña característica que le permite editar varias líneas de datos en la misma ubicación de columna. Ver Edición de modo de columna .

Hace mención a las teclas de flecha, pero también puede usar Page Up/Downun método más rápido, así como las teclas Endy Home. El mouse también funciona. Pero podría usar esto para un método ad hoc de eliminación de datos después de un cierto punto, especialmente si son solo unas pocas líneas. También es bueno para copiar datos, pero la forma en que se pega es un poco extraña, por lo que querrá acostumbrarse a eso primero.

Phillip
fuente
1
Mejor que seleccionarlo y reemplazarlo por sí mismo sería usar un lookbehind como: (? <= ^. {13}). * Y reemplazarlo por nada. Esto seleccionará cualquier cosa después de los primeros 13 caracteres.
Chris Murray
4

Similar a entusiasmar:

  1. Coloque el cursor en la columna 16
  2. Shift+ Alt+Page Down
  3. Shift+ Alt+End
  4. Delete

Si hay una línea en blanco al final del archivo, simplemente presione Up Arrowantes del # 3.

No es perfecto, pero es útil.

El diente
fuente
4
  1. Presione ALTmientras usa el mouse como lazo.
  2. Selecciona todo lo que quieras eliminar
  3. prensa DELETE
actXc
fuente
Suponiendo que la primera columna se alinea bien, como las direcciones IP, esta es la forma más rápida.
bgStack15
El OP dijo: "El modo de columna no es una opción"
Peter Mortensen
3

Aquí hay una forma visual:

  • Coloque el cursor al final de una dirección IP.
  • Alt+ Shift+Pg Down
  • Alt+ Shift+Right
  • Delete

Esto no está 'basado en columnas'. Solo funciona porque todas sus direcciones IP están alineadas.

grado
fuente
1
¿Qué quiere decir con "Esto no es 'basado en columnas'"? Alt + Mayús + Flecha cambia al "modo columna".
MrWhite
No respeta la delineación de tabulación como una columna. Los divide en espacios para que cada línea de la selección tenga el mismo número de caracteres más allá del borde del punto de inicio de las selecciones.
entusiasmado
1

En el modo de expresión regular, busque:

\ t. *

Y reemplazar con

Nada

Karthik Vuppala
fuente
¿Puedes agregar una o dos oraciones para explicar lo que esto hace? Gracias.
Fixer1234
1
Stack Exchange convierte las pestañas en espacios durante la visualización, pero incluso en el modo de edición, el ejemplo no muestra ninguna pestaña.
Arjan
0

Eliminar todo después de la primera columna en Notepad ++:

  1. Seleccionar la segunda columna: Alt+ Arrastrar
  2. Para seleccionar columnas de descanso: simplemente presione Right Arrow
Ipsita
fuente