J'ai un gros fichier texte (environ 2 Go). Je veux faire cinq actions de recherche et de remplacement sur le même fichier et je voudrais le faire en une seule commande. Normalement, j'utilise vim, j'ouvre le fichier, j'effectue une action de remplacement, puis la suivante, etc. Il y a un problème, car j'ai remarqué qu'après trois ou quatre recherches, vim se bloque à cause de problèmes de mémoire.
Voici deux exemples de la commande que j'utilise dans Vim:
:%s/www\.abcdef/www.test.abcdef/g
:%s/www\.klmnop/www.test.klmnop/g
Quelle est la meilleure façon de gérer cela?
la source
sed
. J'ai essayé, et ça marche. Il y a un bon fil dans Unix et Linux Stackexchange , et la réponse acceptée ne mentionne pas les points comme caractères à échapper.Si vous avez beaucoup plus de modèles de recherche, vous pouvez les enregistrer dans un fichier et en lire les substitutions. Par exemple, disons que c'est le contenu de
replacements.txt
:Vous pouvez ensuite lire une liste de N remplacements et les remplacer par ceci:
REMARQUES:
replacements.txt
.sed
par remplacement, ce qui peut prendre un certain temps si vous avez de nombreuses opérations de remplacement.Une autre option serait d'écrire ce qui précède sous forme de
sed
script:Vous pouvez ensuite exécuter le script sur votre fichier et il effectuera tous les remplacements en une seule fois:
la source