Znajdź CRLF w Notepad ++


316

Jak mogę znaleźć / zamienić wszystkie znaki CR / LF w Notepad ++?

Szukam czegoś równoważnego ze znakiem specjalnym ^ p w programie Microsoft Word.


Żeby trochę rozwinąć to, o czym wspominał „ówczesny haker”. W pracy używamy ULtraEdit-32 i pracując z plikami EDI (x.12), często musimy owijać lub rozpakowywać dane. 2 najpopularniejsze ciągi Wyszukaj i zamień to „^ p” i „~”. przejście w jedną stronę zastąpi „~” CR / LF dla łatwiejszego odczytu każdego segmentu. Idąc w drugą stronę, plik powraca do formatu, którego potrzebuje tłumacz EDI. Dla leniwych ludzi, takich jak ja, po prostu mam mapy przypisane do kluczy, aby były łatwe w użyciu.
DavidGrove,

1
Choć nie spokrewnione, ale pomocne. Odwiedziłem tę stronę po poszukiwaniu metody konwersji pliku tekstowego UNIX na format Windows w systemie Windows. Właśnie to zrobiłem i pracowałem CTRL+H, wybierz „Tryb wyszukiwania: wyrażenie regularne”. „Znajdź co: $” i „Zamień na: \ r”. Skopiuj wklej zawartość do Notatnika lub zapisz na płycie.
Guru

2
Tak! Notepad ++ 6.0 zapewnia obsługę PCRE: regex jak [\r\n]+teraz działa. Zaktualizowałem swoją odpowiedź i będę świętować!
VonC

@VonC: Chyba muszę też zaktualizować wszystkie moje odpowiedzi [notepad ++] :)
BoltClock

Wydaje się, że nikt nie wspomniał jeszcze o sekwencji ucieczki, \R która pasuje do ogólnej nowej linii; to znaczy wszystko, co uważane jest za sekwencję łamania linii ...
bobble bubble

Odpowiedzi:


412

[\r\n]+ też powinien działać

Aktualizacja, 26 marca 2012 r., Data wydania Notepad ++ 6.0 :

OMG, to naprawdę działa teraz !!!

Wyrażenie regularne PCRE w Notepad ++


Oryginalna odpowiedź 2008 (Notepad ++ 4.x) - 2009-2010-2011 (Notepad ++ 5.x)

Właściwie nie, to nie działa z regexp ...

Ale jeśli masz Notepad ++ 5.x, możesz skorzystać z trybu wyszukiwania „ rozszerzonego ” i poszukać \r\n. To wszystko znajduje CRLF.

(Zdaję sobie sprawę, że jest to ta sama odpowiedź, co pozostałe, ale ponownie „tryb rozszerzony” jest dostępny tylko w Notatniku ++ 4.9, 5.xi więcej)


Od kwietnia 2009 r. Na stronie Notepad ++ znajduje się artykuł wiki na ten temat:
Jak zamienić zakończenia linii, zmieniając w ten sposób układ linii ”.
(wspomniany przez georgiecasey w swojej odpowiedzi poniżej )

Niektóre istotne fragmenty obejmują następujące procesy wyszukiwania:

Proste wyszukiwanie ( Ctrl+ F), Tryb wyszukiwania =Normal

Możesz wybrać EOLw oknie edycji.

  • Po prostu przesuń kursor na koniec linii i wpisz Shift+ Rightstrzałkę.
  • lub, aby wybrać EOLza pomocą myszy, zacznij od samego końca linii i przeciągnij na początek następnej linii; przeciągnięcie w prawo od EOLnie zadziała. Możesz ręcznie skopiować EOLi wkleić go w polu dla plików uniksowych ( LFtylko).

Proste wyszukiwanie (Ctrl + F), Tryb wyszukiwania = Rozszerzone

Opcja „Rozszerzona” pokazuje \ni \rjako znaki, które można dopasować.
Podobnie jak w trybie wyszukiwania Normal, Notepad ++ szuka dokładnego znaku.
Wyszukiwanie \rw pliku w formacie UNIX niczego nie znajdzie, ale wyszukiwanie \nbędzie. Podobnie plik w formacie Macintosh będzie zawierał, \rale nie zawiera \n.

Proste wyszukiwanie (Ctrl + F), Tryb wyszukiwania = Wyrażenie regularne

Wyrażenia regularne używają znaków ^i $do zakotwiczenia łańcucha dopasowania na początku lub na końcu linii. Na przykład wyszukiwanie return;$spowoduje znalezienie wystąpienia „return;” które występują bez żadnego tekstu w tym samym wierszu. Znaki kotwicy działają identycznie we wszystkich formatach plików.
„.” kropka metaznak nie pasuje do końców linii.

[Testowany w Notepad ++ 5.8.5]: wyszukiwanie wyrażeń regularnych z wyraźnym \rlub \nnie działa (w przeciwieństwie do dokumentacji Scintilla ) .
Nie jest również wyszukiwane wyraźne (wklejone) LF ani (niewidoczne) znaki EOL umieszczone w polu po wybraniu EOL. Wyszukiwanie zaawansowane ( Ctrl+ R) bez wyrażeń regularnych

Ctrl+ Mwstawi coś, co pasuje do nowej linii. Zostaną one zastąpione ciągiem zastępującym.
Polecam tę metodę jako najbardziej niezawodną, ​​chyba że naprawdę musisz użyć wyrażenia regularnego.
Na przykład, aby usunąć co drugi znak nowej linii w pliku o podwójnych odstępach, wpisz Ctrl+ Mdwukrotnie w polu ciągu wyszukiwania i raz w polu ciągu ciągu.

Wyszukiwanie zaawansowane ( Ctrl+ R) za pomocą Regexp.

Ani Ctrl+ M, $ani nie \r\nsą dopasowane.


Ta sama wiki wspomina również o edytorze heksadecymalnym :

  • Wpisz nowy ciąg na początku dokumentu.
  • Następnie wybierz, aby wyświetlić dokument w trybie szesnastkowym .
  • Wybierz jedną z nowych linii i naciśnij Ctrl+ H.
  • Po otwarciu okna dialogowego Zamień wybierz w tle nowy ciąg zastępujący i Ctrl+ Cskopiuj go, aby wkleić w polu Zamień za pomocą wprowadzania tekstu.
  • Następnie Zamień lub Zamień wszystko, jak chcesz.

Uwaga: znak wybrany dla nowej linii zwykle pojawia się jako 0a.
Może mieć inną wartość, jeśli plik ma format Windows. W takim przypadku zawsze możesz przejść do Edit -> EOL Conversion -> Convert to Unix Format, a po wymianie przełącz go z powrotem i Edit -> EOL Conversion -> Convert to Windows Format.


1
Pracowałem w wersji 4.7. Uaktualniona do najnowszej wersji i tryb rozszerzony działa zgodnie z reklamą. Dziękuję wszystkim, którzy odpowiedzieli.
polara,

+1: Korzystałem z wersji 4.6 i miałem podobny problem. A dzięki twojej odpowiedzi zaktualizowałem do wersji 5+. Dzięki!
paercebal,

To działa! Ale to powoduje, że Notepad ++ RegExp jest do kitu. UltraEdit-32 jest mądrzejszy, potrzebujesz \ n i skończyłeś pracę ...
thenonhacker

\ r \ n pracował dla mnie, ale nie \ n, co jest trochę sprzeczne z intuicją, jeśli jesteś programistą, który jest przyzwyczajony do \ n \\\\\\\\\\\\\\\\\\\ \ r \ n.
Warren P

2
@GarretWilson Potwierdzam, że [^\r]\ndziała dobrze (wyszukiwanie wyrażeń
VonC

22

Wygląda na to, że jest to FAQ , a oferowana rozdzielczość to:

Proste wyszukiwanie (Ctrl + H) bez wyrażenia regularnego

Możesz włączyć Widok / Pokaż koniec linii lub wyświetlić / Pokaż wszystko i wybrać teraz widoczne znaki nowej linii. Następnie po uruchomieniu polecenia niektóre znaki pasujące do znaku nowej linii zostaną wklejone do pola wyszukiwania. Dopasowania zostaną zastąpione ciągiem zastępującym, w przeciwieństwie do trybu wyrażeń regularnych.

Uwaga 1: Jeśli wybierzesz je myszką, zacznij tuż przed nimi i przeciągnij na początek następnego wiersza. Przeciąganie do końca linii nie będzie działać.

Uwaga 2: Nie możesz samodzielnie skopiować i wkleić ich w polu.

Wyszukiwanie zaawansowane (Ctrl + R) bez wyrażeń regularnych

Ctrl + M wstawi coś, co pasuje do nowej linii. Zostaną one zastąpione ciągiem zastępującym.


2
Możesz również użyć klawiszy Ctrl + M, aby wstawić znaki nowej linii w ciągu zastępującym.
Dusty Campbell

2
To FAQ, ponieważ jest to trochę brodawka projektowa w skądinąd genialnym produkcie.
Warren P

11

W oknie dialogowym Zamień chcesz ustawić tryb wyszukiwania na „Rozszerzony”. Tryby Normalny lub Wyrażenie regularne nie będą działać.

Następnie po prostu znajdź „\ r \ n” (lub po prostu \ n dla plików w formacie unix lub po prostu \ r dla plików w formacie mac) i ustaw zamień na cokolwiek chcesz.


Ta odpowiedź była nieaktualna, gdy została napisana - Mac nie używa \rod 2001 roku ... (teraz jest unix)
Jasper

9

Nie miałem dużo szczęścia z \ r \ n wyrażeniami regularnymi z okna znajdź / zamień.

Działa to jednak w Notepad ++ v4.1.2:

  1. Użyj menu „Widok | Pokaż koniec linii”, aby włączyć wyświetlanie znaków końca linii. (Kanały linii powrotnej karetki powinny pojawiać się jako pojedynczy zacieniony „znak” CRLF.)

  2. Wybierz jeden z „znaków” CRLF (umieść kursor tuż przed jednym, przytrzymaj klawisz SHIFT, a następnie naciśnij raz klawisz PRAWY KURSOR).

  3. Skopiuj znak CRLF do schowka.

  4. Upewnij się, że nie masz otwartego okna wyszukiwania lub znajdź / zamień.

  5. Otwórz okno dialogowe Znajdź / zamień. Pole „Znajdź co” pokazuje zawartość schowka: w tym przypadku znak CRLF - który pojawia się jako 2 „znaki pudełka” (przypuszczalnie jest to znak niezadrukowany?)

  6. Upewnij się, że opcja „Wyrażenie regularne” jest wyłączona.

Teraz powinieneś być w stanie policzyć, znaleźć lub wymienić według potrzeb.



4

Znalazłem, że to działa, używając funkcji Zamień i używając „\ n” w trybie „Rozszerzony”. Używam wersji 5.8.5.


1
Jeden z niewielu elementów na tej stronie, który działa. Korzystanie z notatnikad ++ 5.8.6. Naprawdę trudno uwierzyć, że coś tak prostego wymaga ilości zbyt skomplikowanych i często niedziałających odpowiedzi, które zostały podane w tym wątku.
Andrew S,

4

W 2013 r., Wersja 6.13 lub nowsza, użyj:

Menu EdycjaKonwersja EOLFormat Windows .


Nie obejmuje to ogólnego przypadku zastąpienia CRLF jednym lub większą liczbą dowolnych znaków. Lub zamieniając jeden lub więcej dowolnych znaków na CRLF (powiedzmy zamień spacje na CRLF).
Peter Mortensen

2

Zakładając, że ma wyszukiwanie „wyrażeń regularnych”, poszukaj \ r \ n. Wolę \ r? \ N, ponieważ niektóre pliki nie używają znaków powrotu karetki.

EDYCJA: Dziękuję za opinię, ktokolwiek to zagłosował. Nauczyłem się tego ... cóż, nic, ponieważ nie dostarczyłeś żadnej informacji zwrotnej. Dlaczego to źle?


1
Nie jestem pewien, dlaczego to nie działa, ale nie działa. Zakładam, że ta implementacja wyrażenia regularnego (w Notepad ++) sprawdza tylko jeden wiersz na raz i ignoruje wszelkie nowe znaki wiersza. Prawdopodobnie dlatego zostałeś odrzucony.
Frank Hadder

1
tak. regex jest wiersz po wierszu w Notatniku ++, więc można dopasować pozycjonowanie w EOL za pomocą $, ale nie można wyszukiwać / zamieniać wyrażeń przekraczających granice linii.
Warren P

2

Użyj opcji wyszukiwania zaawansowanego ( Ctrl+ R) i użyj skrótu klawiaturowego dla CRLF ( Ctrl+ M), aby wstawić znak powrotu karetki.


Ctrl + R nie działało dla mnie, gdy próbowałem. Wstawił dziwny znak kontrolny w dokumencie „ DC2”. Wersja Notepad ++: 7.5.6 (2018-05-19).
Peter Mortensen

2

Jeśli potrzebujesz skomplikowanej zamiany wyrażeń regularnych, w tym \ r \ n, możesz obejść to ograniczenie, stosując trzyetapowe podejście:

  1. Zastąp wszystko \r\ntagiem, powiedzmy #GO#→ Zaznacz „Rozszerzone”, zastąp \r\nprzez#GO#
  2. Wykonaj wyrażenie regularne, na przykład usuwając multilinię ICON="*"z zakładek HTML → Sprawdź wyrażenie regularne, zamieńICON=.[^"]+.> by >
  3. Odłóż \ r \ n → Zaznacz „Rozszerzone”, zastąp #GO#przez\r\n


1

Wprowadź to ustawienie. Menu-> Widok-> Pokaż symbol-> odznacz Pokaż koniec linii


1
To nie odpowiada na pierwotne pytanie. Wyjaśnij, dlaczego uważasz, że jest to użyteczny wkład w te pytania i odpowiedzi. Zapoznaj się również ze stronami Centrum pomocy na temat uzyskiwania przydatnych odpowiedzi.
AdrianHHH

1

Otworzyłem plik w Notepad ++ i dokonałem wymiany w kilku krokach:

  1. Zamień wszystkie „\ r \ n” na „\ r \ n”
  2. Zamień wszystkie „; \ r \ n” na „\ r \ n”
  3. Zamień wszystkie „\ r \ n” na „”

To umieszcza wszystkie przerwy tam, gdzie powinny być, i usuwa te, które niszczą plik.

To zadziałało dla mnie.


1

Nie byłem w stanie tego zrobić w NP v6.9. Uznałem, że jest to dość łatwe w Msoft Word (2K).

Otwórz dokument, przejdź do edycji-> zamień.

Następnie w dolnej części pola wyszukiwania kliknij „więcej”, a następnie znajdź przycisk „Specjalny”, a oni mają dla Ciebie kilka rzeczy. Do stylu Dos użyłem „akapitowego”. Jest to para cr lf w Windows Land.


0

Po prostu zrób znalezisko i zamień puste miejsce w polu zastępowania, aby wszystko poszło do jednej linii. Następnie znajdź i zamień (w moim przypadku średnikiem) i zamień na; \ n

:) -T i C.


1
To różni się od istniejących odpowiedzi jak?
Wszyscy pracownicy są niezbędni

0

Aby zmienić dokument z oddzielnymi wierszami w jeden wiersz, przy czym każdy wiersz tworzy jeden wpis na liście oddzielonej przecinkami:

  1. ctrl+f aby otworzyć wyszukiwanie / zamiennik.
  2. Kliknij kartę „Zamień”.
  3. Wypełnij wpis „Znajdź co” za pomocą „\r\n ”.
  4. Wpisz „Zamień na” wpis na „, ” lub „, ” (w zależności od preferencji).
  5. Odznacz pole „Dopasuj całe słowo” (ważny bit, który wymyka się logice).
  6. Sprawdź przycisk opcji „Rozszerzony”.
  7. Kliknij przycisk „Zamień wszystko”.

Kroki te skręcają np

bar foo

bar baz

baz foo

w:

foo bar, bar baz, baz foo

lub: (w zależności od preferencji)

foo bar, bar baz, baz foo


0

Może możesz użyć wtyczek TextFX

W TextFX przejdź do edycji textfx → usuń puste linie


0

Aby znaleźć dowolny rodzaj sekwencji podziału linii, użyj następującej konstrukcji wyrażenia regularnego:

\R

Aby znaleźć i wybrać kolejne sekwencje podziału linii, dodaj +po \R:\R+ .

Pamiętaj, aby włączyć tryb wyrażeń regularnych :

wprowadź opis zdjęcia tutaj

To pasuje:

  • U+000DU+000A -Sekwencja CRLF`
  • U+000A- LINE FEED, LF
  • U+000B- LINE TABULATION, VT
  • U+000C- FORM FEED, FF
  • U+000D- CARRIAGE RETURN, CR
  • U+0085- NEXT LINE, NEL
  • U+2028 - LINE SEPARATOR
  • U+2029 - PARAGRAPH SEPARATOR
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.