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|$))
$1
Uwagi:
\r
(stary Mac), \n
(Unix, OS X) lub \r\n
(Windows), aby dopasować koniec linii, lub po prostu użyć, \R
który powinien działać wszędzie (dzięki za @Aurel Bílý)\n|$
jest potrzebny, aby uzyskać poprawny wynik nawet na końcu pliku\r
jako 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. \R
Jest 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 newline
Wynik 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!