Odpowiedzi:
Jest to łatwy sposób na osiągnięcie tego. Musisz wykonać 3 kroki.
Przejdź do menu Szukaj & gt; Znajdź ... & gt; Wybierz kartę „Zaznacz”. Aktywuj wyrażenia regularne. Szukać ^<Path>
( ^
jest dla początku linii). Nie zapomnij zaznaczyć „Linie zakładek” i naciśnij „Zaznacz wszystko”
== & gt; Wszystkie wiersze, które chcesz zachować, mają zakładkę
Przejdź do Menu „Szukaj - Zakładka - Odwróć zakładkę”
== & gt; Wszystkie linie, które chcesz usunąć, są zaznaczone.
Przejdź do Menu „Szukaj - Zakładka - Usuń zaznaczone linie”
== & gt; Wszystkie zaznaczone linie zostaną usunięte.
Można to zrobić w dwóch krokach od 6.3. Myślę, że można to zrobić wcześniej niż miałem 5,9, kiedy po raz pierwszy go wypróbowałem.
Używanie posta stema jako podstawy tej odpowiedzi. Teraz jest o jeden krok mniej. Zaznacz linie i usuń nieoznaczone linie. Gotowe. Szczegółowe instrukcje znajdują się poniżej.
Menu wyszukiwania „Znajdź”. W oknie dialogowym Znajdź kliknij kartę „Zaznacz”. Aktywuj wyrażenia regularne. Wyszukaj ^ (^ dotyczy początku linii). Nie zapomnij zaznaczyć „Linie zakładek” i naciśnij „Zaznacz wszystko”
== & gt; Wszystkie wiersze, które chcesz zachować, mają zakładkę
Menu wyszukiwania - & gt; Dodaj do zakładek - & gt; Usuń nieoznaczone linie.
== & gt; Wszystko NIE Zaznaczone linie są usuwane.
zastąpienie wyrażenia regularnego
(?!^.*test.*$)^.+
zamień test na żądany tekst
zastąpić
[\r\n]{2,}
z \r\n
Posługiwać się ^(?!<Path>).*\r\n
zastąpić mecze pustym łańcuchem. Uogólniona wersja byłaby ^(?!.*?test).*\r\n
. To nie usunie pustej linii na końcu pliku. Wszystkie inne linie są usuwane, w tym wiele kolejnych pustych linii.
(?!)
jest negatywnym spojrzeniem w górę. ^.*test.*$
wybiera całą linię zawierającą żądany tekst.
[\r\n]{2,}
pasuje do dowolnego \r\n
to występuje więcej niż raz, gdy jest to nowa linia systemu Windows. jeśli masz Linuksa lub inny system operacyjny, możesz z tym zepsuć. drugi to zastąpienie go jedną linią powrotną.
\r\n
EOL wspomniany w poście jest tym, którego używa system Windows, dlatego może być tym, czego szukasz. Często w środowiskach Linuksa to po prostu \n
lub tylko w środowiskach Mac \r
, więc jeśli ściągniesz plik z jednego, nie będzie to EOL w stylu Windows. Jeśli jednak pobierasz przez FileZilla i wyzwala tryb ASCII, może to zmienić z powrotem do Windows EOL (lubić \n
w \r\n
). Jeśli więc wyrażenie regularne nie działa, sprawdź styl EOL, przechodząc do opcji „Wyświetl & gt; Pokaż symbole”; CR = \r
. LF = \n
.
Wydaje mi się, że najłatwiejszym sposobem jest użycie funkcji „Znajdź wszystko w bieżącym dokumencie”, a następnie skopiowanie wyników do nowego pliku lub zaznaczenie wszystkich i zastąpienie w bieżącym.
Odnalazłoby to wszystkie linie zawierające Twój tekst i wyświetli je na dole. Kliknij prawym przyciskiem myszy wynik wyszukiwania i skopiuj / wklej.
\tLine [\d]*:
. Wciąż świetna odpowiedź.
Przejdź do menu Szukaj - & gt; Odnaleźć... - & gt; Aktywuj wyrażenia regularne. Wyszukaj „^ Ścieżka „(^ oznacza początek linii).
Kliknij przycisk „Znajdź wszystko w bieżącym dokumencie”.
Pojawi się okno „Znajdź wynik” ze wszystkimi liniami wzoru. Wybierz skopiowanie / wklejenie ich do nowej karty w Notatniku ++.
W tej nowej zakładce przejdź do: menu Szukaj - & gt; Zastąpić... - & gt; Aktywuj wyrażenia regularne.
W polu „Znajdź:” użyj wzoru: „Linia d +:”. Pozostaw puste pole „Zamień na:”.
Kliknij przycisk „Zastąp wszystko”.
Zapewnienie, że rzeczywiście chcesz się dopasować <Path>
a nie ścieżką systemu plików, możesz spróbować tego z linii poleceń używając Perla:
perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt
Współpracował z Strawberry Perl w systemie Windows, więc dostosuj odpowiednio, jeśli wyniki nie są zgodne z oczekiwaniami.
Jest niezgrabny, ale skopiuj to wszystko Przewyższać , a następnie użyj =IF(LEFT(A1,6)="<Path>",A1,"")
i skopiuj tę formułę w dół. Następnie skopiuj to z powrotem do Notepad ++. To nie jest idealne, ale jest całkiem łatwe (jeśli masz Excela). Ostrzeżenie: Nie zadziała dobrze z liniami wciętymi (Excel przesunie kolumny itp.).
Z Notepad ++ nie ma łatwego sposobu na zrobienie tego, co chcesz. Musisz albo pobrać program na swój komputer, albo skrypt w VB (zakładam, że jesteś w systemie Windows).
Możesz zrobić to, co chcesz, na dwa sposoby za pomocą sed. Narzędzie sed jest ulubionym na * nix i można je znaleźć dla Windows od wielkich ludzi z GnuWin ( http://gnuwin32.sourceforge.net/packages/sed.htm ). Możesz pobrać ten program, a następnie uruchomić polecenie z wiersza polecenia.
Usuń wszystkie linie niezawierające:
sed -i '/^<PATH>/!d' file
Wydrukuj wszystkie linie zawierające nowy plik:
sed -n '/^<PATH>/p' file > newfile
Sugeruję, abyś użył wydruku linii, które chcesz dodać do nowego pliku. Powodem tego jest to, że prawdopodobnie nie otrzymasz instrukcji regex po raz pierwszy. Narzędzie sed używa składni podstawowej wyrażenia regularnego (zobacz odwołanie w http://www.regular-expressions.info/reference.html ). Jeśli jest coś w rodzaju ścieżki * nix (/ var / www), musisz uciec znaku /, aby działał wyrażeń regularnych.
Przykład: sed -n '/^\/var\/www/p' file > newfile
Spowoduje to wydrukowanie wszystkich linii zaczynających się od '/ var / www'. Jeśli zgłosiłem się do ucieczki znaku /, to polecenie spowodowałoby błąd. Możesz uciec ze specjalnego znaku (takiego jak /) z postacią odwrotnego ukośnika.
Użyj opcji Szukaj- & gt; Zastąp i wprowadź wyrażenie regularne, takie jak ^[^ ].*
i zastąp wszystko pustym łańcuchem za pomocą Regular expression
. Następnym krokiem jest znalezienie pustych linii szukających \n\n
wymiana z \n
za pomocą Extended
wiele razy do 0 occurrences were found.
(posługiwać się \r\n\r\n
i \r\n
w zależności od formatu pliku). Jeśli masz bardzo wiele pustych wierszy z rzędu, jest to trudniejsze w użyciu \n\n\n\n\n\n\n
lub nawet więcej \n
: s w ciągu wyszukiwania.