
Ich habe (bei Google) diese perfekt funktionierende Zeile gefunden, um alle Vorkommen in allen Dateien in meinem Verzeichnis und den Unterverzeichnissen zu ersetzen:
grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g'
Es funktioniert großartig.
Aber jetzt versuche ich, es in einer Funktion in meiner bash_aliases
Datei wie folgt zu verwenden:
freplace() {
grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g';
}
Wenn ich jedoch anrufe
freplace previoustext newtext
in meinem Terminal passiert nichts .... Der Text wird nicht ersetzt.
Irgendeine Idee, warum es nicht funktioniert?
Antwort1
Wenn Sie einer Funktion Argumente übergeben möchten, müssen Sie zur Abfrage dieser Argumente Positionsparameter verwenden.
freplace() {
grep -lr "$1" | xargs sed -i "s/$1/$2/g"
}
Beachten Sie, dass es nicht für Zeichenfolgen funktioniert, die /
oder andere für sed spezielle Zeichen enthalten.