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?
Ceci est également possible avec Notepad ++:
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
Maintenant, allez dans le menu Recherche → Signet → Supprimer les lignes signetées
Terminé.
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.
Tâche facile avec grep
:
grep -v help filename
Ajoutez > newFileName
pour rediriger la sortie vers un nouveau fichier.
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
grep
appelle le programme grep
, évidemment-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.help
est le motif à associerfilename
est le nom du fichier d'entrée>
redirige la sortie vers l'élément suivantnewFileName
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.
Vous pouvez le faire en utilisant sed: sed '/help/ d' < inputFile > outputFile
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.
Rechercher avec une expression régulière:
^.*(help).*$