Comment supprimer toutes les lignes du fichier texte contenant les mots "chat" et "rat" ?
Réponses
Trop de publicités?
grep
approche
Pour créer une copie du fichier sans les lignes correspondant à "cat" ou "rat", on peut utiliser grep
en sens inverse ( -v
) et avec l'option mot entier ( -w
).
grep -vwE "(cat|rat)" sourcefile > destinationfile
L'option du mot entier permet de s'assurer qu'il n'y aura pas de correspondance cats
o grateful
par exemple. La redirection de sortie de votre Shell est utilisée ( >
) pour l'écrire dans un nouveau fichier. Nous avons besoin du -E
pour activer les expressions régulières étendues pour les (one|other)
la syntaxe.
sed
approche
Alternativement, pour supprimer les lignes en place, on peut utiliser sed -i
:
sed -i "/\b\(cat\|rat\)\b/d" filename
El \b
fixe les limites des mots et le d
supprime la ligne correspondant à l'expression entre les barres obliques. cat
y rat
sont toutes deux appariées par le (one|other)
syntaxe que nous devons apparemment échapper avec des backslashes.
Conseil : utilisez sed
sans le -i
pour tester la sortie de la commande avant d'écraser le fichier.
(Basé sur Sed - Supprimer une ligne contenant une chaîne spécifique )
Essayez d'utiliser ex
(qui fait partie de Vi/Vim) :
ex +"g/[cr]at/d" -scwq file.txt
Ce qui précède présente un avantage par rapport à d'autres outils tels que sed
en raison de son FreeBSD non standard -i
extension (en place) et peut ne pas être disponible sur d'autres systèmes d'exploitation. Deuxièmement sed
est un S tream ED itor, pas un éditeur de fichiers .
Utilisation de l'awk pour exclure les lignes contenant des mots spécifiques :
$ awk '!/\<(cat|rat)\>/{print $0}' ./input.txt
syntaxe awk :
-
!/regex/
N'imprime que les lignes qui ne correspondent pas à l'expression rationnelle. -
|
Opérateur d'alternance, utilisé pour spécifier des alternatives. -
(...)
Regroupement, par exemple regroupement d'opérateurs d'alternance. -
\<
Correspond à la chaîne vide au début d'un mot. -
\>
Correspond à la chaîne vide à la fin d'un mot. -
{...}
Déclaration d'action.
- Réponses précédentes
- Plus de réponses