Linux

替換文件中的單詞(區分大小寫)

  • March 19, 2020

我是 linux 新手,我在一個文件中有 200 行。在該文件中,我需要替換特定單詞,例如:現有單詞:foo 新單詞:bar 我讀了一些部落格……我知道可以用sed. 但我不知道如何使用 shell 腳本來做到這一點

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

我需要編寫一個腳本,我不知道如何將文件作為輸入,或者我應該儲存在一個變數中並更改特定的單詞。

腳本應更改特定單詞以及文件名,例如: 輸入文件名:cat home.txt(要替換的單詞 –>cat) 輸出文件名:Dog home.txt(應將 Cat 替換為 Dog)

請幫忙!

如果要更改字元串foobar則可以使用以下命令:

#!/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”,將變為

“我有一隻狗毛蟲。”

不幸的是,避免這種情況並非完全微不足道。

引用自:https://unix.stackexchange.com/questions/573715