Wie kann ich nach der ersten Spalte in Notepad ++ alles löschen?

40

Ich versuche, nach einer Spalte in Notepad ++ alles loszuwerden. Der Spaltenmodus ist keine Option. Ist es möglich?

Was ich habe:

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 

Was ich möchte:

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
quelle
2
Sind die Spalten tabulatorgetrennt?
Excellll
3
Noch eine Frage: Enthalten die Daten, die Sie behalten möchten, jemals ein Leerzeichen?
Excellll
1
nein ich brauche nur die ips
Bob J
20
Warum möchten Sie das in Notepad ++ machen? Warum ist der Spaltenmodus keine Option?
Kamil
1
Sie können den Spaltenmodus verwenden, um die zweite Spalte in der EOL zu löschen, und dann das Trim Trailing und Save verwenden, um den Leerraum zu entfernen.
Darthfett

Antworten:

60

Wenn die Daten in der ersten Spalte niemals ein Leerzeichen enthalten, können Sie einen regulären Ausdruck suchen und ersetzen, um das zu erhalten, was Sie möchten.

Suchen Sie im regulären Ausdruck nach:

^([^ ]*).*

Und ersetzen mit

\1

Was macht das?

^ zeigt an, dass eine Übereinstimmung am Anfang einer Zeile beginnen sollte.
([^ ]*) ist ein Ausdruck, der kein Leerzeichen enthält. Das Spiel ist gierig, daher wird alles bis zum ersten Leerzeichen (oder dem Zeilenende, je nachdem, was zuerst eintritt) abgeglichen.
.* steht alles andere auf der linie.

\1 bezieht sich auf den Teil des Matches innerhalb der Klammern. Das heißt, die gesamte Zeile wird nur durch das Bit aus der ersten Spalte ersetzt.

Excellll
quelle
5
Schön zu wissen, dass Notepad ++ reguläre Ausdrücke in Search-Replace unterstützt!
Kamil
1
Regex erledigt die Arbeit für Sie, solange die Daten niemals ein Leerzeichen enthalten. Einfacher wäre der UNIX-Befehl "Ausschneiden", aber das Ausführen von UNIX-Befehlen unter Windows ist ein völlig anderes Problem. cut wird dafür gemacht und verarbeitet große Dateien schnell, mit definierten Spaltenbegrenzern oder nach Zeichenanzahl.
Karl
31
Dies kann viel einfacher durchgeführt werden: Ersetzen Sie ". *" (Beachten Sie das führende Leerzeichen) durch "" (d. H. Nichts), um alles nach und einschließlich des ersten Leerzeichens zu löschen.
Fraxtil
2
@Fraxtil Danke. Sie sollten das als Antwort posten. Sie erhalten eine positive Stellungnahme von mir.
Excellll
@Excellll in Ordnung, fertig.
Fraxtil
98

Hier ist ein einfacher regulärer Ausdruck, mit dem Sie denselben Effekt erzielen können. Ersetzen

 .*

(Beachten Sie das führende Leerzeichen)

mit nichts. Dadurch wird alles nach dem ersten Leerzeichen gelöscht. Dies funktioniert, solange Ihren IP-Adressen niemals ein Leerzeichen vorangestellt wird (wie in Ihrem Beispiel).

Fraxtil
quelle
8
Mann, Regex ist pure Magie. Ich glaube nicht, dass ich es jemals grokulieren werde :)
Torben Gundtofte-Bruun
14
Stellen Sie sicher, dass die Flagge vorhanden ist. Spielzeilen sind aus.
Taemyr
3
Falls es sich möglicherweise um einen Tabulator anstelle eines Leerzeichens handelt, können Sie verwenden [ \t].*
Cornstalks
4
@ Hornstiele \s.* ist kürzer. Vielleicht sogar verwenden \s+.*, um eine willkürliche Menge an Leerzeichen zu erreichen, jetzt wo wir sind defensiv kodieren .
Anko
1
@ jpmc26, solange du nicht "regex" und "simple" in einem Satz sagst :)
Torben Gundtofte-Bruun
40

Wenn Sie Windows verwenden und nichts dagegen tun, Leerzeichen nachzustellen (Sie können sie später finden / ersetzen), verwenden Sie die Blockauswahl Merkmal:

  1. Drücken und halten Sie die Alt Schlüssel
  2. Wählen Sie mit der Maus den zu löschenden Teil aus (den gesamten Textblock).
  3. Befreit das Alt Schlüssel
  4. Löschen Sie diesen Textblock
  5. Wiederholen Sie dies bei Bedarf
Reed Shilts
quelle
Soll das der Minus "-" Schlüssel sein?
Dracs
Entschuldigung - Ich habe LT- und GT-Halterungen für die Alt-Taste verwendet. Jetzt behoben
Reed Shilts
10
Sie können es in & lt; kdb & gt; Alt & lt; / kbd & gt; und es wird es als Schlüssel formatieren.
Dracs
Ich habe Notepad schon immer verwendet ... und wusste nie, dass es diese Funktion gibt! 1 Bazillion +1 !!!!!
jmstoker
1
Das OP sagte: "Spaltenmodus ist keine Option"
Peter Mortensen
11

EIN regulären Ausdruck ist schneller, aber Sie können mit Makros wirklich komplizierte Dinge erledigen, wenn dies eine kompliziertere Aufgabe ist.

Sie könnten ein Makro aufnehmen:

  1. Cursor in Zeile 1
  2. Schlagen Starte die Aufnahme
  3. drücken Sie die Taste Zuhause
  4. Halt Ctrl während Sie die Taste drücken Rechter Pfeil (sieben Mal)
  5. Halt Verschiebung während Sie die Taste drücken Ende
  6. drücken Sie die Taste Löschen
  7. drücken Sie die Taste Pfeil nach unten
  8. Schlagen Höre auf, aufzunehmen

Spielen Sie es dann ab:

  1. Klicken Sie auf "Makro mehrfach ausführen".
  2. Geben Sie die Zeilen des Dokuments minus 1 ein, da die erste Zeile abgeschlossen ist.
pyker
quelle
9

Setzen Sie den Cursor nach 70.97.110.40.

Place cursor

Drücken Sie Alt , und ziehen Sie den Cursor nach rechts und unten, um den unerwünschten Teil auszuwählen.

Select

Drücken Sie Rücktaste oder Löschen .

Delete

Keshava GN
quelle
1
Die ganze Zeit über Notepad ++ und ich wusste nie, dass es einen "Block Select Mode" wie TextPad gibt.
Kev
@Kev: In Visual Studio funktioniert es genauso.
Peter Mortensen
1
Das OP sagte: "Spaltenmodus ist keine Option"
Peter Mortensen
@ PeterMortensen - re: VS - Hölle, benutze das seit 2002 und wusste es nicht einmal!
Kev
8

Hier sind ein paar alternative Methoden zur gegebenen Antwort.

Wenn Sie Daten haben fixed widthkönnen Sie auch Folgendes verwenden regulären Ausdruck bei der Suche:

Finde was: ^(.{16}).*$

Ersetzen mit: \1

Es ist großartig, wenn die Daten, die Sie behalten möchten, ein Leerzeichen enthalten, wie jemand erwähnt hat. Außerdem können Sie wieder Daten mit fester Breite verwenden Column Mode Editing. Dies ist eine nette kleine Funktion, mit der Sie mehrere Datenzeilen am selben Spaltenstandort bearbeiten können. Sehen Spaltenmodus bearbeiten .

Es werden Pfeiltasten erwähnt, Sie können aber auch verwenden Page Up/Down für eine schnellere Methode sowie End und Home Schlüssel. Die Maus funktioniert auch. Sie können dies jedoch für eine Ad-hoc-Methode zum Löschen von Daten nach einem bestimmten Punkt verwenden, insbesondere wenn es sich nur um wenige Zeilen handelt. Es ist auch gut für das Kopieren von Daten, aber die Art und Weise, wie es eingefügt wird, ist ein bisschen seltsam, so dass Sie sich erst daran gewöhnen möchten.

Phillip
quelle
1
Besser als die Auswahl und das Ersetzen durch sich selbst wäre ein Aussehen wie: (? & Lt; = ^. {13}). * Und es durch nichts zu ersetzen. Nach den ersten 13 Zeichen wird alles ausgewählt.
Chris Murray
4

Ähnlich wie bei Entfegree:

  1. Setzen Sie den Cursor in Spalte 16
  2. Verschiebung + Alt + Seite runter
  3. Verschiebung + Alt + Ende
  4. Löschen

Wenn sich am Ende der Datei eine leere Zeile befindet, drücken Sie einfach Aufwärtspfeil vor # 3.

Es ist nicht perfekt, aber praktisch.

The Cog
quelle
4
  1. Drücken Sie ALT während Sie die Maus als Lasso verwenden.
  2. Wählen Sie alle aus, die Sie entfernen möchten
  3. Drücken Sie LÖSCHEN
actXc
quelle
Angenommen, die erste Spalte ist genau wie IP-Adressen, dann ist dies der schnellste Weg.
bgStack15
Das OP sagte: "Spaltenmodus ist keine Option"
Peter Mortensen
3

Hier ist ein visueller Weg:

  • Setzen Sie den Cursor am Ende einer IP-Adresse.
  • Alt + Verschiebung + Pg runter
  • Alt + Verschiebung + Recht
  • Löschen

Dies ist nicht "spaltenbasiert". Es funktioniert nur, weil alle Ihre IP-Adressen übereinstimmen.

enthdegree
quelle
1
Was meinen Sie mit "Dies ist nicht spaltenbasiert"? Alt + Umschalt + Pfeil wechselt in den "Spaltenmodus".
MrWhite
Tab-Abgrenzung als Spalte wird dabei nicht berücksichtigt. Sie teilt sie in Leerzeichen auf, so dass jede Zeile in der Auswahl über den Rand des Startpunkts der Auswahl hinaus die gleiche Anzahl von Zeichen hat.
enthdegree
1

Suchen Sie im regulären Ausdruck nach:

\ t. *

Und ersetzen mit

Nichts

Karthik Vuppala
quelle
Können Sie ein oder zwei Sätze hinzufügen, um zu erklären, was dies bewirkt? Vielen Dank.
fixer1234
1
Stack Exchange konvertiert Registerkarten während der Anzeige in Leerzeichen. Das Beispiel enthält jedoch selbst im Bearbeitungsmodus keine Registerkarten.
Arjan
0

Löschen Sie alles nach der ersten Spalte in Notepad ++:

  1. Wählen Sie die zweite Spalte aus: Alt + Ziehen
  2. Um die restlichen Spalten auszuwählen, drücken Sie einfach Rechter Pfeil
Ipsita
quelle