Reemplazo de la palabra (distingue entre mayúsculas y minúsculas) en un archivo

Reemplazo de la palabra (distingue entre mayúsculas y minúsculas) en un archivo

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, barpuede 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.

información relacionada