Замена слова (с учетом регистра) в файле

Замена слова (с учетом регистра) в файле

Я новичок в Linux, у меня есть файл на 200 строк. В этом файле мне нужно заменить определенное слово, например:существующее слово: foo Новое слово: bar Я читал некоторые блоги...я понял, что это можно сделать с помощью sed. Но я не знаю, как это сделать с помощью скрипта оболочки

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

Мне нужно написать скрипт, я не знаю, как передать файл в качестве входных данных или мне следует сохранить его в переменной и изменить конкретное слово.

Скрипт должен изменить определенное слово, а также имя файла, например: Входное имя файла: cat home.txt (слово, которое нужно заменить --> cat) Выходное имя файла: Dog home.txt (Cat следует заменить на Dog)

Пожалуйста, помогите!

решение1

Если вы хотите изменить строку, fooто barвы можете использовать это:

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

Обратите внимание, что если шаблон поиска соответствует частям слова, эти части также заменяются, например:

«У меня есть гусеница».

со строкой поиска "кошка" и строкой замены "собака" станет

«У меня есть догерпиллар».

К сожалению, избежать этого не совсем тривиально.

Связанный контент