2010-01-14 9 views
2

J'ai un script bash que j'écris qui greps pour un chemin de fichier. Je veux pouvoir utiliser la sortie du grep pour remplacer chaque instance de l'ancien chemin de fichier par le nouveau chemin de fichier.grep et sed - remplacer toutes les instances d'une chaîne

Exemple:

grep -R "/~test/dev/portal" .

Je veux être en mesure de tuyau cette sortie en sed pour remplacer chaque instance de "/ ~ test/dev/portail /" avec "/ apps/portail /" (gardez à l'esprit, la sortie de la grep est généralement plus d'un fichier)

Merci d'avance!

+0

Vérifiez sur ServerFault pour ce genre de réponses. –

Répondre

6
grep -ZlR "/~test/dev/portal" . | xargs -0 -l1 sed -i 's:/~test/dev/portal/:/apps/portal/:g' 
+0

Fantastique, merci! – hellopat

+1

'grep -Z | xargs -0' juste au cas –

+0

Dennis, bons arguments! Je n'ai même pas pensé à les utiliser pour ça (je suppose que je dois étudier les pages de manuel plus souvent). 'grep -ZlR"/~ test/dev/portal ". | xargs -0 -l1 sed -i de:/~ test/dev/portal /:/apps/portal /: g'' –

Questions connexes