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?
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?
Odpowiedzi:
Możesz to zrobić, znajdując i zamieniając:
.+\r\n(.+(\r\n|$))$1Uwagi:
\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\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.
.+\R(.+)$1 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
. matches newlineWynik dla podanego przykładu:
Monkey
Lion
animal
\n)
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!