![Reemplazo de la palabra (distingue entre mayúsculas y minúsculas) en un archivo](https://rvso.com/image/169413/Reemplazo%20de%20la%20palabra%20(distingue%20entre%20may%C3%BAsculas%20y%20min%C3%BAsculas)%20en%20un%20archivo.png)
Soy nuevo en Linux, tengo 200 líneas en un archivo. En ese archivo necesito reemplazar la palabra específica, por ejemplo:palabra existente: foo Nueva palabra: bar
Leí algunos blogs... entendí que se puede hacer con sed
. Pero no sé cómo hacer eso con un script de shell.
sed 's/foo/bar/' /path to a file
Necesito escribir un script, no sé cómo dar el archivo como entrada o debo almacenarlo en una variable y cambiar la palabra específica.
El script debe cambiar la palabra específica así como el nombre del archivo, por ejemplo: Nombre del archivo de entrada: cat home.txt (palabra a reemplazar -->cat) Nombre del archivo de salida: Dog home.txt (Cat debe reemplazarse con Dog)
¡Por favor ayuda!
Respuesta1
Si desea cambiar la cadena foo
, bar
puede usar esto:
#!/bin/bash
# the pattern we want to search for
search="foo"
# the pattern we want to replace our search pattern with
replace="bar"
# my file
my_file="/path/to/file"
# generate a new file name if our search-pattern is contained in the filename
my_new_file="$(echo ${my_file} | sed "s/${search}/${replace}/")"
# replace all occurrences of our search pattern with the replace pattern
sed -i "s/${search}/${replace}/g" "${my_file}"
# rename the file to the new filename
mv "${my_file}" "${my_new_file}"
Tenga en cuenta que si el patrón de búsqueda coincide con partes de una palabra, esas partes también se sustituyen, por ejemplo:
"Tengo una oruga".
con una cadena de búsqueda de "gato" y una cadena de reemplazo de "perro", se convertiría en
"Tengo una dogerpillar."
Desafortunadamente, evitar esto no es del todo trivial.