Jak mogę usunąć wszystko po pierwszej kolumnie w Notepad ++?


40

Próbuję się wszystkiego pozbyć po kolumnie w Notepad ++. Tryb kolumny nie jest opcją. Czy to możliwe?

Co ja mam:

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 

Czego chcę:

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

2
Czy kolumny są rozdzielone tabulatorami?
Excellll,

3
Jeszcze jedno pytanie: czy dane, które chcesz zachować, zawierają kiedyś spację?
Excellll,

1
nie, potrzebuję tylko ips
Bob J

20
Dlaczego chcesz to zrobić w Notatniku ++? Dlaczego tryb kolumnowy nie jest opcją?
Kamil

1
Możesz użyć trybu kolumny, aby usunąć drugą kolumnę do EOL, a następnie użyć opcji Przytnij śledzenie i zapisz, aby pozbyć się białych znaków.
Casey Kuball,

Odpowiedzi:


60

Jeśli dane w pierwszej kolumnie nigdy nie zawierają spacji, możesz użyć wyrażenia regularnego znajdź i zamień, aby uzyskać to, czego chcesz.

W trybie wyrażeń regularnych wyszukaj:

^([^ ]*).*

I zamień na

\1

Co to robi:

^wskazuje, że każde dopasowanie powinno rozpoczynać się na początku linii.
([^ ]*)to dowolne wyrażenie, które nie zawiera spacji. Dopasowanie jest zachłanne, więc dopasuje wszystko do pierwszej spacji (lub końca linii, w zależności od tego, co nastąpi wcześniej).
.*jest wszystko inne na linii.

\1odnosi się do części dopasowania w nawiasach. Oznacza to, że cała linia jest zastępowana tylko bitem z pierwszej kolumny.


5
Miło wiedzieć, że notepad ++ obsługuje wyrażenia regularne w wyszukiwaniu-zamień!
Kamil

1
Regex wykona zadanie za Ciebie, o ile dane nigdy nie będą zawierały spacji. Prostsze byłoby polecenie „Wytnij” systemu UNIX, ale wykonywanie poleceń systemu UNIX w systemie Windows to cały „inny problem”. cut jest do tego stworzony i przetwarza duże pliki szybko, ze zdefiniowanymi ogranicznikami kolumn lub według liczby znaków.
Karl,

31
Można to zrobić znacznie prościej: zamień „. *” (Zwróć uwagę na spację wiodącą) na „” (tzn. Nic), aby usunąć wszystko po pierwszej spacji włącznie.
Fraxtil,

2
@Fraxtil Thanks. Powinieneś opublikować to jako odpowiedź. Otrzymasz ode mnie opinię.
Excellll

@Excellll w porządku, gotowe.
Fraxtil,

99

Oto prostsze wyrażenie regularne, którego możesz użyć, aby osiągnąć ten sam efekt. Zastąpić

 .*

(zwróć uwagę na wiodące miejsce)

z niczym. Spowoduje to usunięcie wszystkiego po pierwszej spacji włącznie. Będzie to działać, o ile adresy IP nigdy nie będą poprzedzone żadnymi białymi spacjami (jak ma to miejsce w twoim przykładzie).


8
Człowieku, regex to czysta magia. Nie sądzę, żebym kiedykolwiek to
zrobił

14
Upewnij się, że flaga ma. dopasowanie nowych linii jest wyłączone.
Taemyr

3
Jeśli potencjalnie jest to tabulator zamiast spacji, możesz użyć[ \t].*
Cornstalks

4
@Cornstalks \s.*jest krótszy. Może nawet użyj \s+.*, aby dopasować dowolną ilość białych znaków, teraz, gdy kodujemy defensywnie .
Anko

1
@ jpmc26, pod warunkiem, że nie powiesz „regex” i „simple” w jednym zdaniu :)
Torben Gundtofte-Bruun

39

Jeśli używasz systemu Windows i nie przeszkadza ci końcowe spacje (możesz je później znaleźć / zamienić), użyj funkcji Blokuj wybór :

  1. Naciśnij i przytrzymaj Altklawisz
  2. Za pomocą myszy wybierz część do usunięcia (cały blok tekstu)
  3. Zwolnij Altklucz
  4. Usuń ten blok tekstu
  5. Powtórz w razie potrzeby

Czy to powinien być klawisz minus „-”?
Dracs,

Przepraszam - użyłem nawiasów LT i GT wokół klawisza „alt”. Naprawiono teraz.
Reed Shilts

10
Możesz go zmienić na <kdb> Alt </kbd> i sformatuje go jako klucz.
Dracs,

Używam Notatnika od zawsze ... i nigdy nie wiedziałem, że ta funkcja istnieje! 1 Bazillion +1 !!!!!

1
OP powiedział: „Tryb kolumny nie jest opcją”
Peter Mortensen

11

Wyrażenie regularne jest szybsza, ale można zrobić kilka naprawdę trudnych rzeczy z makr, czy jest to bardziej skomplikowane zadanie.

Możesz zarejestrować makro:

  1. Kursor na linii 1
  2. Hit Rozpocznij nagrywanie
  3. Naciśnij klawisz home
  4. Przytrzymaj Ctrlwciśnięty klawisz Right arrow(siedem razy)
  5. Przytrzymaj Shiftpodczas naciskania klawiszaEnd
  6. naciśnij klawisz Delete
  7. naciśnij klawisz Down arrow
  8. Trafienie Stop recording

Następnie odtwórz:

  1. Kliknij „Uruchom makro wiele razy”
  2. Wpisz wiersze dokumentu minus 1, ponieważ pierwszy wiersz jest kompletny.

9

Umieść kursor za 70.97.110.40.

Umieść kursor

Naciśnij Alti przeciągnij kursor w prawo i w dół, aby wybrać niechcianą część.

Wybierz

Naciśnij Backspacelub Delete.

Kasować


1
Przez cały ten czas korzystałem z Notepad ++ i nigdy nie wiedziałem, że ma „Block Select Mode” jak TextPad.
Kev

@ Kev: działa tak samo w Visual Studio.
Peter Mortensen

1
OP powiedział: „Tryb kolumny nie jest opcją”
Peter Mortensen

@PeterMortensen - re: VS - cholera, używałem tego od 2002 roku i nawet nie wiedziałem!
Kev

8

Oto kilka alternatywnych metod dla podanej odpowiedzi.

Jeśli masz dane fixed width, możesz również użyć następującego wyrażenia regularnego w wyszukiwaniu:

Znajdź co: ^(.{16}).*$

Zamienić: \1

Wspaniale jest, jeśli dane, które chcesz zachować, zawierają spację, jak ktoś wspomniał. Dodatkowo, ponownie dla danych o stałej szerokości, możesz użyć Column Mode Editing. Jest to fajna mała funkcja, która pozwala edytować wiele linii danych w tej samej lokalizacji kolumny. Zobacz Edycja w trybie kolumnowym .

Wymienia klawisze strzałek, ale można także użyć Page Up/Downdo szybszej metody, a także klawiszy Endi Home. Mysz również działa. Ale możesz użyć tego do ad hoc metody usuwania danych po pewnym momencie, szczególnie jeśli jest to tylko kilka wierszy. Jest również dobry do kopiowania danych, ale sposób wklejania jest nieco dziwny, więc najpierw musisz się do tego przyzwyczaić.


1
Lepszym rozwiązaniem niż wybranie go i zastąpienie go samym byłoby użycie wyglądu typu: (? <= ^. {13}). * I zastąpienie go niczym. Spowoduje to wybranie dowolnego elementu po pierwszych 13 znakach.
Chris Murray

4

Podobne do enthdegree:

  1. Umieść kursor w kolumnie 16
  2. Shift+ Alt+Page Down
  3. Shift+ Alt+End
  4. Delete

Jeśli na końcu pliku jest pusta linia, po prostu naciśnij Up Arrowprzed # 3.

To nie jest idealne, ale jest przydatne.


4
  1. Naciśnij ALTpodczas używania myszy jako lasso.
  2. Wybierz wszystko, co chcesz usunąć
  3. naciśnij DELETE

Zakładając, że pierwsza kolumna ładnie się układa, jak adresy IP, to jest to najszybszy sposób.
bgStack15,

OP powiedział: „Tryb kolumny nie jest opcją”
Peter Mortensen

3

Oto sposób wizualny:

  • Umieść kursor na końcu adresu IP.
  • Alt+ Shift+Pg Down
  • Alt+ Shift+Right
  • Delete

To nie jest „oparte na kolumnie”. Działa tylko dlatego, że wszystkie adresy IP są ustawione w jednej linii.


1
Co rozumiesz przez „To nie jest„ oparte na kolumnach ””? Alt + Shift + Arrow przełącza na „tryb kolumnowy”.
MrWhite

Nie szanuje tabulacji jako kolumny. Dzieli je na spacje, dzięki czemu każda linia w zaznaczeniu ma tę samą liczbę znaków poza krawędzią punktu początkowego zaznaczenia.
enthdegree

1

W trybie wyrażeń regularnych wyszukaj:

\ t. *

I zamień na

Nic


Czy możesz dodać zdanie lub dwa, aby wyjaśnić, co to robi? Dzięki.
fixer1234

1
Wymiana stosu konwertuje tabulacje na spacje podczas wyświetlania, ale nawet w trybie edycji przykład nie pokazuje żadnych tabulatorów.
Arjan

0

Usuń wszystko po pierwszej kolumnie w Notepad ++:

  1. Wybierz drugą kolumnę: Alt+ Przeciągnij
  2. Aby wybrać pozostałe kolumny: wystarczy nacisnąć Right Arrow
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.