Risposte:
C'è un modo semplice per raggiungere questo obiettivo. È necessario eseguire 3 passaggi.
Vai al menu Cerca> Trova ...> Seleziona la scheda "Segna". Attiva le espressioni regolari. Cerca ^<Path>
( ^
è per l'inizio della linea). Non dimenticare di selezionare "Righe segnalibro" e premere "Seleziona tutto"
==> Tutte le righe che vuoi mantenere hanno un segnalibro
Vai al menu "Cerca - Segnalibro - Segnalibro inverso"
==> Tutte le righe che si desidera eliminare sono inserite nei segnalibri.
Vai al menu "Cerca - Aggiungi ai segnalibri - Rimuovi le righe aggiunte ai segnalibri"
==> Tutte le righe aggiunte ai segnalibri vengono eliminate.
Questo può effettivamente essere fatto in due passaggi a partire da 6.3. Penso che possa essere fatto prima di quello che avevo 5.9 quando l'ho provato per la prima volta.
Usando il post di stema come base di questa risposta. C'è un passo in meno ora. Contrassegnare le linee e rimuovere le linee non contrassegnate. Fatto. Seguono istruzioni dettagliate.
Menu di ricerca "Trova". Nella finestra di dialogo Trova, fai clic sulla scheda "Seleziona". Attiva le espressioni regolari. Cerca ^<Path>
( ^
è per l'inizio della linea). Non dimenticare di selezionare "Righe segnalibro" e premere "Seleziona tutto"
==> Tutte le righe che vuoi mantenere ora hanno un segnalibro
Menu Cerca -> Segnalibro -> Rimuovi linee non contrassegnate.
==> Tutte le righe NON segnalibro vengono eliminate.
^
termine di ricerca, né usare espressioni regolari. Spero che questo aiuti qualcuno.
regex sostituire
(?!^.*test.*$)^.+
sostituire il test con il testo richiesto
sostituire
[\r\n]{2,}
con \r\n
Usa ^(?!<Path>).*\r\n
per sostituire le partite con una stringa vuota. La versione generalizzata sarebbe ^(?!.*?test).*\r\n
. Questo non rimuoverà la riga vuota alla fine del file. Tutte le altre righe vengono rimosse, incluse più righe vuote consecutive.
(?!)
è uno sguardo negativo. ^.*test.*$
seleziona l'intera riga che contiene il testo richiesto.
[\r\n]{2,}
corrisponde a quelli \r\n
che si verificano più di una volta che si tratta della nuova riga di Windows. se si dispone di Linux o di un altro sistema operativo, potrebbe essere necessario confonderlo. il secondo è sostituirlo con una linea di ritorno.
\r\n
EOL menzionata nel post è ciò che utilizza Windows e quindi potrebbe essere o meno ciò che stai cercando. Spesso negli ambienti Linux è solo \n
o solo negli ambienti Mac \r
, quindi se si estrae un file da uno di questi, non sarà EOL in stile Windows. Tuttavia, se si esegue il download tramite trigger di modalità FileZilla e ASCII, è possibile ripristinarli in Windows EOL (come \n
in \r\n
). Quindi, se regex non funziona, controlla lo stile EOL andando su "Visualizza> Mostra simboli> Mostra fine linea". CR = \r
. LF = \n
.
Mi sembra che il modo più semplice sia usare la funzione "Trova tutto nel documento corrente" e quindi copiare i risultati in un nuovo file o selezionare tutto e sostituire in quello corrente.
Questo troverebbe tutte le righe che contengono il tuo testo e le elenco in fondo. Basta fare clic destro sul risultato della ricerca e copiare / incollare.
\tLine [\d]*:
. Ancora un'ottima risposta.
Vai al menu Cerca -> Trova ... -> Attiva espressioni regolari. Cerca "^ Path " (^ è per l'inizio della linea).
Fai clic sul pulsante "Trova tutto nel documento corrente".
Verrà visualizzata la finestra "Trova risultato" con tutte le linee del motivo. Seleziona copia / incollali in una nuova scheda in Notepad ++.
In questa nuova scheda, vai a: menu Cerca -> Sostituisci ... -> Attiva espressioni regolari.
Nel campo "Trova cosa:", usa il modello: "Linea \ d +:". Lascia vuoto il campo "Sostituisci con:".
Fai clic sul pulsante "Sostituisci tutto".
A condizione che tu voglia effettivamente abbinare <Path>
e non un percorso del file system, puoi provarlo da una riga di comando usando Perl:
perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt
Ha funzionato con Strawberry Perl su Windows, quindi regola di conseguenza se i risultati non sono quelli che ti aspetti.
È goffo, ma copia tutto in Excel , quindi usa =IF(LEFT(A1,6)="<Path>",A1,"")
e copia quella formula fino in fondo. Quindi copiarlo nuovamente su Notepad ++. Non è l'ideale, ma è abbastanza facile (se hai Excel). Avvertenza: non funzionerà bene con le linee rientrate (Excel sposta le colonne, ecc.).
Non esiste un modo semplice per fare ciò che vuoi con Notepad ++. Dovrai scaricare un programma sul tuo computer o eseguire lo script di qualcosa in VB (suppongo che tu sia su Windows).
Puoi fare quello che vuoi in due modi con sed. L'utilità sed è una delle preferite su * nix e può essere trovata per Windows dalle persone fantastiche di GnuWin ( http://gnuwin32.sourceforge.net/packages/sed.htm ). Scaricare questo programma e quindi eseguire il comando dal prompt dei comandi.
Elimina tutte le righe che non contengono:
sed -i '/^<PATH>/!d' file
Stampa tutte le righe contenenti in un nuovo file:
sed -n '/^<PATH>/p' file > newfile
Ti suggerisco di usare stampare le righe che vuoi su un nuovo file. La ragione di ciò è che probabilmente non otterrai l'istruzione regex per la prima volta. L'utilità sed utilizza la sintassi di base delle espressioni regolari (consultare il riferimento su http://www.regular-expressions.info/reference.html ). Se è qualcosa come un percorso * nix (/ var / www), allora dovrai sfuggire al carattere / per far funzionare il tuo regex.
Esempio: sed -n '/^\/var\/www/p' file > newfile
questo stamperà tutte le righe che iniziano con '/ var / www'. Se avessi richiesto di sfuggire al carattere /, il comando avrebbe generato un errore. Puoi sfuggire a un carattere speciale (come /) con il carattere barra rovesciata \.
Usa Cerca-> Sostituisci e inserisci un'espressione regolare come ^[^ ].*
e sostituisci tutto con una stringa vuota usando Regular expression
. Il prossimo passo è trovare le righe vuote che cercano di \n\n
sostituirle \n
usando Extended
più volte fino a 0 occurrences were found.
(usare \r\n\r\n
e in \r\n
base al formato del file). Se hai molte righe vuote di fila, è più veloce da usare \n\n\n\n\n\n\n
o anche di più \n
: s nella stringa di ricerca.