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