
Encontré (en Google) esta línea que funciona perfectamente para reemplazar todas las apariciones en todos los archivos de mi directorio y subdirectorios:
grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g'
Funciona muy bien.
Pero ahora estoy intentando usarlo en una función en mi bash_aliases
archivo de la siguiente manera:
freplace() {
grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g';
}
Sin embargo, cuando llamo
freplace previoustext newtext
en mi terminal no pasa nada…. El texto no se reemplaza.
¿Alguna idea de por qué no funciona?
Respuesta1
Si desea pasar argumentos a una función, debe utilizar parámetros posicionales para seleccionarlos.
freplace() {
grep -lr "$1" | xargs sed -i "s/$1/$2/g"
}
Tenga en cuenta que no funciona para cadenas que contienen /
u otros caracteres especiales para sed.