Regex: rimuovere le righe contenenti

Ho un lungo documento di comandi. Usando notepad ++ o regex, voglio cancellare tutte le righe che contengono “help” incluso keyboard_help, ecc.

Come si può fare?

Questo è anche ansible con Notepad ++

  • Vai al menu di ricerca Ctrl + F e apri la scheda "Mark" .
  • Seleziona "Bookmark line" (se non c’è nessun aggiornamento "Mark" Scheda "Mark" nella versione attuale).

  • Inserisci il termine di ricerca e fai clic su "Mark All"

    • Tutte le linee che contengono il termine di ricerca sono contrassegnate con un segnalibro.
  • Ora vai al menu "Search -> Bookmark -> Remove Bookmarked lines"

  • Fatto.

Un altro modo per farlo in Notepad ++ è tutto nella finestra di dialogo Trova / Sostituisci e con espressioni regolari:

  • Ctrl + h per visualizzare la finestra di dialogo Trova Sostituisci.

  • Nella casella di testo Find what: include la tua espressione regolare:. .*help.*\r?\n (dove \r è facoltativo nel caso in cui il file non abbia terminazioni di riga di Windows).

  • Lasciare la casella Replace with: vuota.

  • Assicurati che il pulsante di opzione Espressione regolare nell’area Modalità di ricerca sia selezionato. Quindi fai clic su Replace All e voilà! Tutte le linee contenenti il ​​tuo help termini di ricerca sono state rimosse.

How-To Line Replace in N ++

Compito facile con grep :

 grep -v help filename 

Aggiungi > newFileName per redirect l’output in un nuovo file.


Aggiornare

Per chiarirlo, il comportamento normale stamperà le linee sullo schermo. Per collegarlo a un file, è ansible utilizzare>. Quindi, in questo comando:

 grep -v help filename > newFileName 
  1. grep chiama ovviamente il programma grep
  2. -v è un flag per invertire l’output. Per default, grep stampa le linee che corrispondono al modello dato. Con questo flag, stamperà le linee che non corrispondono al modello.
  3. help è il modello da abbinare
  4. filename è il nome del file di input
  5. > reindirizza l’output al seguente elemento
  6. newFileName il nuovo file in cui verrà salvato l’output.

Come avrai notato, non cancellerai le cose nel tuo file. grep lo leggerà e un altro file verrà salvato, modificato di conseguenza.

Puoi farlo usando sed: sed '/help/ d' < inputFile > outputFile

Se sei su Windows, prova findstr , non sono necessari strumenti di terze parti:

 findstr /V /L "searchstring" inputfile.txt > outputfile.txt 

Supporta anche regex! Basta leggere la guida dello strumento findstr /?

PS Se vuoi lavorare con grandi file HUGE (come i file di registro 400mb) un editor di testo non è molto efficiente in termini di memoria, quindi, come qualcuno ha già indicato, gli strumenti da riga di comando sono la strada da percorrere. Ma non c’è grep su Windows, quindi …

L’ho appena eseguito su un file di registro da 1 GB e ci sono voluti letteralmente 3 secondi.

Cerca con espressione regolare:

^.*(help).*$