![Substituindo a palavra (sensível a maiúsculas e minúsculas) em um arquivo](https://rvso.com/image/169413/Substituindo%20a%20palavra%20(sens%C3%ADvel%20a%20mai%C3%BAsculas%20e%20min%C3%BAsculas)%20em%20um%20arquivo.png)
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, foo
você bar
pode 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.