Utiliser sed
pour modifier le fichier en place:
sed -i '/^\(report\|-t\(h\|o\)\)/!d' your_file
Cela demande sed
de supprimer toutes les lignes ne correspondant pas au modèle. Le motif lui-même est ^
(début de ligne), suivi de l'un report
ou -t
de l'autre h
ou de ou o
.
Vous devez noter que ce n'est pas une modification réelle sur place: sed
crée une copie de sauvegarde temporaire et écrase le fichier d'origine avec.
Si vous souhaitez sed
conserver une copie de sauvegarde du fichier d'origine (ce qui peut être une bonne idée si le fichier contient des données critiques), donnez au -i
commutateur une extension pour créer un fichier de sauvegarde:
sed -i'.bak' -e '/^\(report\|-t\(h\|o\)\)/!d' your_file
va modifier your_file
et créer une sauvegarde de l'original appelé your_file.bak
.
Une note latérale
Veuillez ne pas mal interpréter mes intentions ou m'en offusquer, mais j'ai remarqué que vous avez de nombreuses questions similaires liées à l'expression rationnelle / au traitement de texte. Je vous conseille de commencer à apprendre sed
, awk
et grep
par vous-même pour accélérer votre productivité. Encore une fois, ne vous méprenez pas, je suis trop heureux d'aider (comme la plupart des gens ici); c'est juste que je pense que vous bénéficierez énormément de ramasser ces outils pour votre usage quotidien.
Juste pour prouver à quel point les gens sont utiles ici, tenez compte de la suggestion de @ slm dans les commentaires ci-dessous et n'hésitez pas à visiter ce salon de discussion à tout moment pour des questions.