替换文件中的单词(区分大小写)

替换文件中的单词(区分大小写)

我是linux新手,我的文件中有200行。在该文件中,我需要替换特定的单词,例如:现有单词: foo 新单词: bar 我读了一些博客...我知道可以用sed.但我不知道如何使用 shell 脚本来做到这一点

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}"

请注意,如果搜索模式与单词的部分内容匹配,这些部分也会被替换,例如:

“我有一只毛毛虫。”

搜索字符串为“cat”,替换字符串为“dog”,将变为

“我有一只狗柱。”

不幸的是,避免这种情况并非完全微不足道。

相关内容