GNU/Linux >> Tutoriels Linux >  >> Linux

Tester la recherche et le remplacement Sed récursifs avant l'exécution ?

Existe-t-il un moyen d'exécuter une recherche et un remplacement récursifs d'essai à l'aide de sed , avant de l'exécuter ? Je veux juste imprimer les résultats avant de faire la recherche et le remplacement. Quelque chose comme faire écho aux résultats de,

grep -rl term1 . |xargs sed -i -e 's/term1/term2/'

Réponse acceptée :

Vous pouvez exécuter sed sans -i et parcourir la sortie avec less

grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less

Ensuite, exécutez sed avec -i.bak pour créer des sauvegardes que vous pourrez ensuite différencier

grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct

Modifier : Comme suggéré dans le commentaire, utilisez grep --null | xargs -0 . Cela entraîne la fin des noms de fichiers par l'octet nul, ce qui le rend sûr pour les noms de fichiers avec des caractères inhabituels comme la nouvelle ligne. Oui, n est un caractère valide dans un nom de fichier unix. Les seuls caractères interdits sont les slash / et le caractère nul

Linux
  1. Utilisation de sed pour rechercher et remplacer des fichiers texte sous Linux

  2. Utilisation de Sed pour rechercher et remplacer une ligne entre des plages de motifs

  3. Couper / Grep Et Df -h ?

  4. Grep et queue -f ?

  5. Répertorier les noms de fichiers en fonction d'un modèle de nom de fichier et du contenu du fichier ?

Comment utiliser sed pour rechercher et remplacer une chaîne dans des fichiers

Manipuler du texte avec sed et grep

Comment rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

Recherche et remplacement MySQL

Comment effectuer une recherche Grep sur tous les fichiers et dans tous les répertoires

Comment utiliser Sed pour rechercher et remplacer une chaîne dans un fichier