web-dev-qa-db-fra.com

Regex: Supprimer les lignes contenant "help", etc

J'ai un long document de commandes. En utilisant Notepad ++ ou regex, je veux supprimer toutes les lignes contenant "help", notamment keyboard_help, etc.

Comment cela peut-il être fait?

351
dukevin

Ceci est également possible avec Notepad ++:

  • Allez dans le menu de recherche, Ctrl + Fet ouvrez l'onglet Mark.
  • Vérifiez ligne de signet (s'il n'y a pas de mise à jour de Mark à la version actuelle).

  • Entrez votre terme de recherche et cliquez Marquer tout

    • Toutes les lignes contenant le terme recherché sont marquées d'un signet.
  • Maintenant, allez dans le menu RechercheSignetSupprimer les lignes signetées

  • Terminé.

892
stema

Une autre façon de faire cela dans Notepad ++ est tout dans la boîte de dialogue Rechercher/Remplacer et avec regex:

  • Ctrl + h pour faire apparaître le dialogue rechercher remplacer.

  • Dans la zone de texte Find what:, insérez votre expression régulière: .*help.*\r?\n (où \r est facultatif si le fichier ne comporte pas de fin de ligne Windows).

  • Laissez la zone de texte Replace with: vide.

  • Assurez-vous que le bouton radio Expression régulière dans la zone du mode de recherche est sélectionné. Puis cliquez sur Replace All et le tour est joué! Toutes les lignes contenant votre terme de recherche help ont été supprimées.

How-To Line Replace in N++

171
OozeMeister

Tâche facile avec grep:

grep -v help filename

Ajoutez > newFileName pour rediriger la sortie vers un nouveau fichier.


Mise à jour

Pour clarifier, le comportement normal sera d’imprimer les lignes à l’écran. Pour le diriger vers un fichier, le > peut être utilisé. Ainsi, dans cette commande:

grep -v help filename > newFileName
  1. grep appelle le programme grep, évidemment
  2. -v est un drapeau pour inverser la sortie. Par défaut, grep imprime les lignes correspondant au motif donné. Avec cet indicateur, il imprimera les lignes qui non correspondent au motif.
  3. help est le motif à associer
  4. filename est le nom du fichier d'entrée
  5. > redirige la sortie vers l'élément suivant
  6. newFileName le nouveau fichier où la sortie sera sauvegardée.

Comme vous avez pu le constater, vous ne supprimerez pas d'éléments de votre fichier. grep le lira et un autre fichier sera sauvegardé et modifié en conséquence.

16
sidyll

Vous pouvez le faire en utilisant sed: sed '/help/ d' < inputFile > outputFile

13
Tikhon Jelvis

Si vous êtes sous Windows, essayez findstr. Les outils tiers ne sont pas nécessaires:

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

Il supporte aussi les regex! Il suffit de lire l'aide de l'outil findstr /?.

P.S. Si vous souhaitez travailler avec de gros fichiers énormes (tels que des fichiers journaux de 400 Mo), un éditeur de texte n'utilise pas beaucoup la mémoire. Les outils en ligne de commande sont la voie à suivre. Mais il n'y a pas de grep sous Windows, alors ...

Je viens d'exécuter ceci sur un fichier journal de 1 Go, et cela a pris littéralement 3 secondes.

6
Alex

Rechercher avec une expression régulière:

^.*(help).*$
4
Rob Rob