Ich weiß, dass dies eine wirklich alte Frage, aber ...
@ Antwort vehomzzz die verwendet find
und xargs
, wenn die Fragen sagt ausdrücklich grep
und sed
nur.
@EmployedRussian und @BrooksMoses versuchte, es zu sagen war ein dup von awk
und sed
, aber es ist nicht - auch hier die Frage ausdrücklich sagt grep
und sed
nur.
So, hier ist meine Lösung, vorausgesetzt, Sie Bash als Shell verwenden:
OLDIFS=$IFS
IFS=$'\n'
for f in `grep -rl a.example.com .` # Use -irl instead of -rl for case insensitive search
do
sed -i 's/a\.example\.com/b.example.com/g' $f # Use /gi instead of /g for case insensitive search
done
IFS=$OLDIFS
Wenn Sie eine andere Shell, wie Unix-Shell verwenden, lassen Sie mich wissen und ich werde versuchen, finde eine Syntaxanpassung.
P. S .: Hier ist ein Einzeiler:
OLDIFS=$IFS;IFS=$'\n';for f in `grep -rl a.example.com .`;do sed -i 's/a\.example\.com/b.example.com/g' $f;done;IFS=$OLDIFS
Quellen:
Wird dies die Zeichenfolge in jeder Datei unter/home/Benutzerverzeichnis ersetzen? Unterverzeichnisse einbinden? – Tony
Ja wird es, obwohl Sie eine Art von Muster angeben sollten -Namen "Muster" nach finden – vehomzzz
was meinst du "eine Art Muster"? – Tony