Rechercher & Remplacer du texte dans plusieurs documents à partir de la ligne de commande

Anonim

Si vous êtes à l'aise avec la ligne de commande et que vous avez besoin de rechercher et de remplacer un mot, une phrase, une URL ou un caractère dans un groupe de plusieurs documents texte, perl fait très bien le travail. Une simple chaîne de commande effectuera très rapidement une recherche et un remplacement par lots de groupe sur du texte, que ce soit dans un seul document ou couvrant un groupe de plusieurs documents.

Comme beaucoup de choses dans 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 effectuer une autre recherche et remplacement pour réparer votre faute de frappe.

La syntaxe de commande de base est la suivante : perl -pi -w -e 's/THIS/THAT/g;' /chemin/vers/fichiers.txt

Pour un exemple d'un seul mot, si vous devez remplacer toutes les occurrences de "ogre" par "cornbread" dans chaque fichier .txt dans le dossier "Documents", vous utiliserez alors 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 « The Chocolate Factory » avec « The Wizard of Oz » dans un groupe de fichiers .txt commençant par « Films » stockés dans le répertoire Documents :

perl -pi -w -e 's/La Chocolaterie/Le Magicien d'Oz/g;' ~/Documents/Films.txt

La recherche et le remplacement sont effectués immédiatement. Vous pouvez revérifier le changement en utilisant cat et grep pour vérifier :

"

cat ~/Documents/Films124.txt |grep Le Magicien d&39;Oz"

Certes, c'est assez avancé, et oui, la recherche et le remplacement par lots via plusieurs documents peuvent être effectués de manière plus conviviale via des applications GUI telles que TextWrangler et BBEdit, mais parfois la ligne de commande est juste plus rapide pour des tâches rapides comme celle-ci et d'autres similaires, de plus, il ne nécessite aucun téléchargement supplémentaire pour être utilisé.

Un grand bravo à Lifehacker pour l'excellente astuce.

Update : La commande "sed" est une autre façon de rechercher et de remplacer rapidement via la ligne de commande. Couvrir 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 que vous utilisiez perl ou sed devient une question de préférence personnelle.

Rechercher & Remplacer du texte dans plusieurs documents à partir de la ligne de commande