Trouver et remplacer du texte dans plusieurs documents à partir de la ligne de commande

Si vous êtes à l’aise avec la ligne de commande et que vous vous trouvez dans une situation où vous devez trouver et remplacer un mot, une phrase, une URL ou un caractère dans un groupe de plusieurs documents textuels, perl fait très bien le travail. Une simple chaîne de commande permet d’effectuer très rapidement un lot de recherche et de remplacement sur du texte, que ce soit dans un seul document ou dans un groupe de plusieurs documents.

Comme beaucoup d’éléments de la ligne de commande, il n’y a pas de processus de confirmation. Vous devez donc vous assurer que votre syntaxe est correctement définie avant de lancer une commande, sinon vous devrez peut-être faire un autre find & replace pour réparer votre erreur de frappe.

La syntaxe de commande de base est la suivante :

perl -pi -w -e ‘s/THIS/THAT/g;’ /path/to/files*.txt

Pour un exemple d’un seul mot , si vous devez remplacer toutes les occurrences de « ogre » par « pain de maïs » dans chaque fichier .txt du dossier « Documents », vous devez utiliser la commande suivante :

perl -pi -w -e ‘s/ogre/cornbread/g;’ ~/Documents/*.txt

Pour un exemple de recherche et de remplacement d’une phrase entière , supposons que nous allons remplacer la phrase entière « La chocolaterie » par « Le magicien d’Oz » dans un groupe de fichiers .txt commençant par « Films » stockés dans le répertoire Documents :

perl -pi -w -e ‘s/The Chocolate Factory/The Wizard of Oz/g;’ ~/Documents/Films*.txt

La recherche et le remplacement se font immédiatement. Vous pouvez vérifier le changement en utilisant le chat et le grep pour vérifier :

cat ~/Documents/Films124.txt |grep « Magicien d’Oz »

Certes, cette méthode est assez avancée, et oui, la recherche et le remplacement par lots dans plusieurs documents peuvent être effectués de manière plus conviviale grâce à des applications graphiques comme TextWrangler et BBEdit, mais parfois la ligne de commande est juste plus rapide pour des tâches rapides comme celle-ci et d’autres qui sont similaires, et elle ne nécessite pas de téléchargement supplémentaire pour être utilisée.

Un grand bravo à Lifehacker pour l’excellente astuce.

Mise à jour : La commande « sed » est une autre façon de faire de la recherche et du remplacement rapide par la ligne de commande. La couverture de sed est principalement un sujet pour un autre article, mais la syntaxe de base de l’utilisation de sed pour cette tâche est un peu plus simple et donc plus facile à retenir :

sed -i ‘s/THIS/THAT/g’ /path/to/files*.txt

Il n’y a pas de bonne ou de mauvaise façon, donc le fait d’utiliser perl ou sed devient une question de préférence personnelle.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *