Substituindo a palavra (sensível a maiúsculas e minúsculas) em um arquivo

Substituindo a palavra (sensível a maiúsculas e minúsculas) em um arquivo

Sou novo no Linux, tenho 200 linhas em um arquivo. Nesse arquivo, preciso substituir a palavra específica, por exemplo:palavra existente: foo Nova palavra: bar Eu li alguns blogs... entendi que isso pode ser feito com sed. Mas não sei como fazer isso com um script de shell

sed 's/foo/bar/' /path to a file

Preciso escrever um script, não sei como dar o arquivo como entrada ou devo armazenar em uma variável e alterar a palavra específica.

O script deve alterar a palavra específica, bem como o nome do arquivo, por exemplo: Nome do arquivo de entrada: cat home.txt (palavra a ser substituída -> cat) Nome do arquivo de saída: Dog home.txt (Cat deve ser substituído por Dog)

Por favor, ajude!

Responder1

Se você quiser alterar a string, foovocê barpode usar isto:

#!/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}"

Esteja ciente de que se o padrão de pesquisa corresponder a partes de uma palavra, essas partes também serão substituídas, por exemplo:

"Eu tenho uma lagarta."

com uma string de pesquisa "cat" e uma string de substituição "dog", se tornaria

"Eu tenho um cão-pilar."

Evitar isso, infelizmente, não é totalmente trivial.

informação relacionada