Jak usunąć każdą nieparzystą linię w Notepad ++?

29

Próbuję edytować dokument zawierający 20000 wierszy. Muszę usunąć każdą nieparzystą linię, na przykład:

Apple
Monkey
Orange
Lion
fruit
animal

Jak mogę usunąć znaki każdego nieparzystego wiersza w dokumencie?

Nithin N.
źródło
co rozumiesz przez linię nieparzystą? Czy chcesz usunąć nieparzyste (niechciane) słowo z całego dokumentu?
antzshrek,
4
Każde nieparzyste linie, takie jak 1,3,5,7,9,11,13,13 ... itd.
Nithin N
1
Spróbuj zastąpić nową linią (regexp): [\ n. + \ N]
Art Gertner
@ ArtGertner Próbowałem z wyrażeniem, że nie działa.
Nithin N
1
Nagrałbym głupie makro: strzałka w dół, strzałka w dół, del.
chingNotCHing

Odpowiedzi:

23

Możesz to zrobić, znajdując i zamieniając:

  • Otwórz okno dialogowe zamiany ( Ctrl+ H)
  • Wybierz „Wyrażenie regularne”
  • Znajdź co: .+\r\n(.+(\r\n|$))
  • Zamienić:
    $1
  • Naciśnij „Zamień wszystko”

Uwagi:

  • W zależności od systemu operacyjnego musisz użyć \r(stary Mac), \n(Unix, OS X) lub \r\n(Windows), aby dopasować koniec linii, lub po prostu użyć, \Rktóry powinien działać wszędzie (dzięki za @Aurel Bílý)
  • \n|$ jest potrzebny, aby uzyskać poprawny wynik nawet na końcu pliku
  • Domyślnie Notepad ++ zastępuje rzeczywistą pozycję kursora na końcu pliku. Umieść kursor na początku pliku.
    • (Możesz również zaznaczyć „zawijaj”, ale w takim przypadku najpierw usunie linię, w której znajduje się kursor, zamiast naprawdę szukać linii nieparzystej).

Wpisz opis zdjęcia tutaj

Máté Juhász
źródło
Prawie działa, ale nie edytuje pierwszego zestawu nieparzystych linii, powiedzmy od 1 do 15.
Nithin N
Zmień zrzut ekranu z większą przejrzystością tego okna zastępowania.
Biswapriyo
11
Należy pamiętać, że \rjako zakończenie linii jest bardzo rzadkie - rzeczywiście było używane w systemie Mac OS, ale w klasycznych wersjach wcześniejszych niż OS-X. W OS X i później zakończenia linii są \n, jak każdy rozsądny Unix. \RJest także lepszy do dopasowania dowolnego zakończenia linii.
Aurel Bílý
@ AurelBílý To prawda, jednak Notepad ++ działa tylko w systemie Windows, więc przenośność tutaj nie stanowi większego problemu.
Rob
18
  • Ctrl+H
  • Znajdź co: .+\R(.+)
  • Zamienić: $1
  • Replace all

Wyjaśnienie:

.+      : 1 or more any character but newline
\R      : any kind of linebreak (ie. \r, \n, \r\n)
(       : start group 1
  .+    : 1 or more any character but newline
)       : end group 1
  • Sprawdź wyrażenie regularne
  • NIE SPRAWDŹ . matches newline

Wynik dla podanego przykładu:

Monkey
Lion
animal
Toto
źródło
@NithinN: Należy pamiętać, że zaakceptowana odpowiedź nie działa z plikami linux (tj. Linebreak \n)
Toto
7
  1. Otwórz plik i umieść kursor tekstowy na początku pierwszego wiersza.
  2. Menu → MakroRozpocznij nagrywanie
  3. Naciśnij Endklawisz na klawiaturze
  4. Shift+ Homewięcbackspace
  5. Down
  6. Backspace
  7. Down
  8. Menu → MakroZatrzymaj nagrywanie
  9. Menu → MakroUruchom makro wiele razy → Zaznacz Uruchom do końca pliku
  10. Kliknij Run

Zasadniczo wykonaj akcję raz, aby usunąć nieparzystą linię, a następnie poproś program, aby powtórzył akcję do końca pliku. Można to wykorzystać do rozwiązania wielu problemów!

UserF40
źródło
1

Właśnie sprawdziłem na komputerze mojego kolegi, który faktycznie używa Notepad ++. Spróbuj tego:

Wpisz opis zdjęcia tutaj

Art Gertner
źródło
Wydaje mi się, że to usuwa parzyste linie (2,4,6 ...), a nie nieparzyste.
Máté Juhász
1
To jest poprawne. Jednak usuwanie parzystych linii jest łatwiejsze, a problem można rozwiązać, dodając pustą linię na początku pliku
Art Gertner
@ ArtGertner powinien być \ r \ n. + \ R \ n zastąpiony przez \ r \ n
chingNotCHing
@chingNotCHing, dobry! Zaktualizowałem swoją odpowiedź
Art Gertner,
@ArtGertner Jak już wspomniałeś, działa tylko dla linii parzystych. Ale dla dużego zestawu danych nie jest edytowany dla pierwszego zestawu danych, powiedzmy, z 1-15 linii.
Nithin N