2009-12-14 8 views
0

Existe-t-il un moyen de rechercher et de remplacer une chaîne à l'aide de la commande unique unix grep de façon récurrente dans plusieurs répertoires? Je sais que cela peut être fait en utilisant la combinaison de trouver avec d'autres utilitaires comme sed perl etc. mais y at-il un moyen où nous pouvons utiliser seulement grep pour le faire sur la ligne de commande unix?Rechercher et remplacer une chaîne

+1

Pourquoi la contrainte d'utiliser grep? Obtenir Sed impliqué rendra cela beaucoup plus facile imho. –

+1

En effet. 'grep' est pour la recherche seulement, il ne fait simplement pas * do * remplacer. 'sed' et' perl' sont des outils plus appropriés pour cela. –

Répondre

1

Je ne pense pas que seulement grep fonctionnerait ici; concernant sed et d'autres services publics seront beaucoup plus facile, que juste grep

0

une façon, si vous avez GNU et trouver shell bash

find /path -type f -iname "*.txt" | while read -r FILE 
do 
    while read -r LINE 
    do 
     case "$LINE" in 
     *WORD_TO_SEARCH*) LINE=${LINE//WORD_TO_SEARCH/REPLACE};; 
     esac 
     echo "$LINE" >> temp 
    done < "$FILE" 
    mv temp "$FILE" 
done 
Questions connexes