Trova CRLF in Notepad ++


316

Come posso trovare / sostituire tutti i caratteri CR / LF in Notepad ++?

Sto cercando qualcosa di equivalente al carattere speciale ^ p in Microsoft Word.


Solo per costruire un po 'su ciò che stava dicendo "thenonhacker". Usiamo ULtraEdit-32 sul lavoro e, lavorando con file EDI (x.12), spesso dobbiamo avvolgere o scartare i dati. Le 2 stringhe Cerca e sostituisci più comuni sono "^ p" & "~". andare in un modo sostituirà "~" con un CR / LF per una lettura più semplice di ogni segmento. Al contrario, il file torna nel formato richiesto dal traduttore EDI. Per le persone pigre come me, ho solo quelle mappe mappate sui tasti per un facile utilizzo.
DavidGrove,

1
Sebbene non correlato, ma utile. Ho visitato questa pagina dopo aver cercato un metodo per convertire il file di testo UNIX in formato Windows in Windows. Questo è quello che ho fatto e lavorato CTRL+H, selezionare "Modalità di ricerca: espressione regolare". "Trova cosa: $" e "Sostituisci con: \ r". Copia incolla il contenuto in Blocco note o salvalo su disco.
Guru,

2
Sìì! Notepad ++ 6.0 offre il supporto di PCRE: regex come [\r\n]+ora funziona. Ho aggiornato la mia risposta e festeggerò!
VonC,

@VonC: Suppongo di dover aggiornare anche tutte le mie risposte [notepad ++] :)
BoltClock

Risposte:


412

[\r\n]+ dovrebbe funzionare anche

Aggiornamento, 26 marzo 2012, data di rilascio di Notepad ++ 6.0 :

OMG, adesso funziona davvero !!!

PCRE regexp in Notepad ++


Risposta originale 2008 (Notepad ++ 4.x) - 2009-2010-2011 (Notepad ++ 5.x)

In realtà no, non sembra funzionare con regexp ...

Ma se hai Notepad ++ 5.x, puoi usare la modalità di ricerca " estesa " e cercare \r\n. Questo trova tutto il tuo CRLF.

(Mi rendo conto che questa è la stessa risposta delle altre, ma ancora una volta, la "modalità estesa" è disponibile solo con Notepad ++ 4.9, 5.xe altro)


Dall'aprile 2009, hai pubblicato un articolo wiki sul sito Notepad ++ su questo argomento:
" Come sostituire le estremità di linea, cambiando così il layout della linea ".
(menzionato da georgiecasey nella sua risposta di seguito )

Alcuni estratti rilevanti includono i seguenti processi di ricerca:

Ricerca semplice ( Ctrl+ F), Modalità di ricerca =Normal

È possibile selezionare un EOLnella finestra di modifica.

  • Basta spostare il cursore alla fine della riga e digitare Shift+ RightFreccia.
  • oppure, per selezionare EOLcon il mouse, iniziare proprio alla fine della riga e trascinare all'inizio della riga successiva; trascinando a destra del EOLnon funzionerà. È possibile copiare manualmente EOLe incollarlo nel campo per i file Unix ( LF-solo).

Ricerca semplice (Ctrl + F), Modalità di ricerca = Esteso

L'opzione "Estesa" mostra \ne \rcome caratteri che potrebbero essere abbinati.
Come per la modalità di ricerca normale, Notepad ++ sta cercando il carattere esatto.
La ricerca \rin un file in formato UNIX non troverà nulla, ma la ricerca di \nvolontà. Allo stesso modo, un file in formato Macintosh conterrà \rma non \n.

Ricerca semplice (Ctrl + F), Modalità di ricerca = Espressione regolare

Le espressioni regolari usano i caratteri ^e $ancorano la stringa di corrispondenza all'inizio o alla fine della riga. Ad esempio, la ricerca return;$troverà occorrenze di "return;" che si verificano senza testo successivo sulla stessa riga. I caratteri di ancoraggio funzionano in modo identico in tutti i formati di file.
Il '.' dot metacharacter non corrisponde alle terminazioni di linea.

[Testato in Notepad ++ 5.8.5]: una ricerca di espressioni regolari con esplicito \ro \nnon funziona (contrariamente alla documentazione di Scintilla ) .
Né esegue una ricerca su un LF esplicito (incollato) o sui caratteri (invisibili) EOL inseriti nel campo quando viene selezionato un EOL. Ricerca avanzata ( Ctrl+ R) senza regexp

Ctrl+ Minserirà qualcosa che corrisponde alle nuove righe. Saranno sostituiti dalla stringa di sostituzione.
Consiglio questo metodo come il più affidabile, a meno che non sia necessario utilizzare regex.
Ad esempio, per rimuovere ogni seconda riga in un file con spaziatura doppia, immettere Ctrl+ Mdue volte nella casella della stringa di ricerca e una volta nella casella Sostituisci la stringa.

Ricerca avanzata ( Ctrl+ R) con Regexp.

Ctrl+ M, $\r\nsono abbinati.


La stessa wiki menziona anche l' alternativa dell'editor esadecimale :

  • Digitare la nuova stringa all'inizio del documento.
  • Quindi selezionare per visualizzare il documento in modalità esadecimale .
  • Seleziona una delle nuove linee e premi Ctrl+ H.
  • Mentre hai la finestra di dialogo Sostituisci, seleziona sullo sfondo la nuova stringa di sostituzione e Ctrl+ Ccopiala per incollarla nell'input Sostituisci con testo.
  • Quindi sostituire o sostituire tutto come si desidera.

Nota: il carattere selezionato per la nuova riga di solito appare come 0a.
Potrebbe avere un valore diverso se il file è in formato Windows. In tal caso puoi sempre andare a Edit -> EOL Conversion -> Convert to Unix Format, e dopo la sostituzione, ripristinalo e Edit -> EOL Conversion -> Convert to Windows Format.


1
Stavo correndo la v 4.7. Aggiornato alla versione più recente e la modalità estesa funziona come pubblicizzato. Grazie a tutti coloro che hanno risposto.
polara,

+1: stavo eseguendo 4.6 e ho avuto un problema simile. E grazie alla tua risposta, sono passato a 5+. Grazie!
Paercebal,

Funziona! Ma questo fa succhiare Notepad ++ RegExp. UltraEdit-32 è più intelligente, hai solo bisogno di \ n e hai finito il tuo lavoro ...
thenonhacker

\ r \ n ha funzionato per me, ma non \ n, il che è abbastanza intuitivo se sei uno sviluppatore abituato a \ n essere abbreviato per \ r \ n.
Warren P,

2
@GarretWilson Confermo che [^\r]\nfunziona perfettamente (ricerca regex): i.stack.imgur.com/PxZWD.png
VonC

22

Sembra che questa sia una FAQ e la risoluzione offerta sia:

Ricerca semplice (Ctrl + H) senza regexp

È possibile attivare Visualizza / Mostra fine riga o Visualizza / Mostra tutto e selezionare i caratteri di nuova riga ora visibili. Quindi, quando si avvia il comando, alcuni caratteri corrispondenti al carattere di nuova riga verranno incollati nel campo di ricerca. Le partite saranno sostituite dalla stringa di sostituzione, a differenza della modalità regex.

Nota 1: se li selezioni con il mouse, inizia subito prima di loro e trascina all'inizio della riga successiva. Trascinare fino alla fine della riga non funzionerà.

Nota 2: non è possibile copiarli e incollarli nel campo da soli.

Ricerca avanzata (Ctrl + R) senza regexp

Ctrl + M inserirà qualcosa che corrisponde alle nuove righe. Saranno sostituiti dalla stringa di sostituzione.


2
Puoi usare Ctrl + M anche per inserire nuove righe nella stringa di sostituzione.
Dusty Campbell,

2
È una FAQ perché si tratta di una sorta di verruca di design in un prodotto altrimenti geniale.
Warren P,

11

Nella finestra di dialogo Sostituisci, si desidera impostare la modalità di ricerca su "Esteso". Le modalità di espressione normale o regolare non funzioneranno.

Quindi trova "\ r \ n" (o solo \ n per i file unix o solo \ r per i file in formato mac) e imposta la sostituzione come preferisci.


Questa risposta non è stata aggiornata quando è stata scritta - Mac non utilizza \rdal 2001 ... (è unix ora)
Jasper

9

Non ho avuto molta fortuna con le espressioni regolari dalla finestra Trova / Sostituisci.

Tuttavia, questo funziona in Notepad ++ v4.1.2:

  1. Utilizzare il menu "Visualizza | Mostra fine riga" per abilitare la visualizzazione dei caratteri di fine riga. (I feed delle righe di ritorno al carrello devono essere visualizzati come un 'carattere' CRLF ombreggiato singolo.)

  2. Seleziona uno dei "caratteri" CRLF (posiziona il cursore proprio di fronte a uno, tieni premuto il tasto MAIUSC, quindi premi il tasto CURSORE DESTRA una volta).

  3. Copia il carattere CRLF negli Appunti.

  4. Assicurarsi che non sia aperta la finestra di dialogo Trova o Trova / Sostituisci.

  5. Apri la finestra di dialogo Trova / Sostituisci. Il campo "Trova cosa" mostra il contenuto degli appunti: in questo caso il carattere CRLF - che si presenta come 2 "caratteri" (presumibilmente è un carattere non stampabile?)

  6. Assicurarsi che l'opzione "Espressione regolare" sia disattivata.

Ora dovresti essere in grado di contare, trovare o sostituire come desideri.



4

Il modo in cui l'ho trovato funzionante è usando la funzione Sostituisci e usando "\ n", con la modalità "Estesa". Sto usando la versione 5.8.5.


1
Uno dei pochissimi articoli in questa pagina che funziona. Utilizzando notepadd ++ 5.8.6. È davvero difficile credere che qualcosa di così semplice debba richiedere la quantità di risposte eccessivamente complesse e spesso non funzionanti fornite in questo thread.
Andrew S,

4

Nel 2013, v6.13 o successive, utilizzare:

Menu ModificaConversione EOLFormato Windows .


Ciò non copre il caso generale di sostituzione di CRLF con uno o più caratteri arbitrari. O sostituendo uno o più caratteri arbitrari con CRLF (diciamo sostituisci i caratteri spaziali con CRLF).
Peter Mortensen,

2

Supponendo che abbia una ricerca "espressioni regolari", cerca \ r \ n. Preferisco \ r? \ N, perché alcuni file non usano i ritorni a capo.

EDIT: Grazie per il feedback, chiunque lo abbia votato. L'ho imparato ... beh, niente, perché non hai fornito feedback. Perché è sbagliato?


1
Non sono sicuro del perché non funzioni ma non funziona. Suppongo che questa implementazione regex (in Notepad ++) controlli solo una singola riga alla volta e ignori qualsiasi nuovo carattere di riga. Questo è probabilmente il motivo per cui sei stato votato verso il basso.
Frank Hadder,

1
Sì. regex è riga per riga in notepad ++, quindi puoi abbinare posizionalmente a EOL con $ ma non puoi cercare / sostituire espressioni che attraversano i confini della linea.
Warren P,

2

Utilizzare l'opzione di ricerca avanzata ( Ctrl+ R) e utilizzare la scorciatoia da tastiera per CRLF ( Ctrl+ M) per inserire un ritorno a capo.


Ctrl + R non ha funzionato per me quando l'ho provato. Ha inserito uno strano carattere di controllo nel documento " DC2". Versione Notepad ++: 7.5.6 (2018-05-19).
Peter Mortensen,

2

Se è necessario eseguire una sostituzione regexp complessa, incluso \ r \ n, è possibile aggirare la limitazione con un approccio in tre passaggi:

  1. Sostituisci tutto \r\ncon un tag, diciamo #GO#→ Seleziona 'Esteso', sostituisci \r\ncon#GO#
  2. Esegui regexp, ad esempio rimuovendo multilinea ICON="*"da un segnalibro HTML → Controlla regexp, sostituisciICON=.[^"]+.> by >
  3. Ripristina \ r \ n → Controlla 'Esteso', sostituisci #GO#con\r\n

2

Vai a Visualizza -> Mostra simbolo -> Mostra tutto il personaggio // Ha funzionato per me


1

Effettua questa impostazione. Menu-> Visualizza-> Mostra simbolo-> deseleziona Mostra fine linea


1
Questo non risponde alla domanda originale. Spiega perché ritieni che questo sia un contributo utile a queste domande e risposte. Leggi anche le pagine del Centro assistenza su come fornire risposte utili.
AdrianHHH,

1

Ho aperto il file in Notepad ++ e ho effettuato una sostituzione in pochi passaggi:

  1. Sostituisci tutto "\ r \ n" con "\ r \ n"
  2. Sostituisci tutto "; \ r \ n" con "\ r \ n"
  3. Sostituisci tutto "\ r \ n" con ""

Questo mette tutte le interruzioni dove dovrebbero essere e rimuove quelle che stanno rompendo il file.

Ha funzionato per me.


1

Non ero assolutamente in grado di farlo in NP v6.9. L'ho trovato abbastanza facile su Msoft Word (2K).

Apri il documento, vai a modifica-> sostituisci.

Quindi nella parte inferiore della casella di ricerca, fai clic su "altro", quindi trova il pulsante "Speciale" e hanno diverse cose per te. Per lo stile Dos, ho usato quello "paragrafo". Questa è una coppia cr in Windows Land.


0

Basta fare un \ n con un trova e sostituisci con uno spazio vuoto nel campo Sostituisci in modo che tutto vada su una riga. Quindi cerca e sostituisci (nel mio caso con i due punti) e sostituisci con; \ n

:) -T & C


1
Questo è diverso dalle risposte esistenti come?
Tutti i lavoratori sono essenziali il

0

Per modificare un documento di righe separate in una riga singola, con ciascuna riga che forma una voce in un elenco separato da virgole:

  1. ctrl+ fper aprire la ricerca / sostituzione.
  2. Fai clic sulla scheda "Sostituisci".
  3. Riempi la voce "Trova" con " \r\n".
  4. Riempi la voce "Sostituisci con" con " ," o " , " (a seconda delle preferenze).
  5. Deseleziona la casella di controllo "Abbina l'intera parola" (il bit importante che elude la logica).
  6. Controllare il pulsante di opzione "Esteso".
  7. Fai clic sul pulsante "Sostituisci tutto".

Questi passaggi girano ad es

foo bar

bar baz

baz foo

in:

foo bar, bar baz, baz foo

oppure: (a seconda delle preferenze)

foo bar, bar baz, baz foo


0

Forse puoi usare i plugin TextFX

In TextFX, vai a textfx modifica → elimina righe vuote


0

Per trovare qualsiasi tipo di sequenza di interruzione di riga, utilizzare il seguente costrutto regex:

\R

Per trovare e selezionare consecutive sequenze di interruzione di riga, aggiungere +dopo \R: \R+.

Assicurati di attivare la modalità di espressione regolare :

inserisci qui la descrizione dell'immagine

Corrisponde:

  • U+000DU+000A -Sequenza 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.