我是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”,将变为
“我有一只狗柱。”
不幸的是,避免这种情况并非完全微不足道。