Linux
替換文件中的單詞(區分大小寫)
我是 linux 新手,我在一個文件中有 200 行。在該文件中,我需要替換特定單詞,例如:現有單詞:foo 新單詞:bar 我讀了一些部落格……我知道可以用
sed
. 但我不知道如何使用 shell 腳本來做到這一點sed 's/foo/bar/' /path to a file
我需要編寫一個腳本,我不知道如何將文件作為輸入,或者我應該儲存在一個變數中並更改特定的單詞。
腳本應更改特定單詞以及文件名,例如: 輸入文件名:cat home.txt(要替換的單詞 –>cat) 輸出文件名:Dog home.txt(應將 Cat 替換為 Dog)
請幫忙!
如果要更改字元串
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”,將變為
“我有一隻狗毛蟲。”
不幸的是,避免這種情況並非完全微不足道。