2017-05-04 17 views
0

我有一個文件,名爲matteo_test.sh,其中包含字符串/nettools/python_64。 我想用/nettools/python_release/python278/替換這個字符串。使用sed替換字符串正在工作但不保存文件

我做到以下幾點:

original_str='/nettools/python_64' 
replace_str='/nettools/python_release/python278/' 
sed "s~$original_str~$replace_str~" matteo_test.sh 

當我執行的是,在命令行輸出我的文件matteo_test.sh的全部內容。在此輸出內容下,我可以看到該字符串已被正確替換。

但是,文件本身的內容沒有被修改,因爲如果我重新打開它,我仍然可以看到裏面的舊字符串。

看來我執行的sed命令將替換爲包含文件全部內容的字符串,而不是替換爲文件本身。

我不是Unix Shell的專家,所以我可能錯過了一個非常簡單的觀點:任何人都可以幫助我理解我在做什麼錯了嗎?

我的目的是將該字符串替換爲文件。

+0

使用'sed -i'來更新文件中的內容 – Kalanidhi

+0

@Kalanidhi非常感謝,它工作。請把它寫成答案,以便我接受並加註。 –

回答

0

嘗試sed -i保存在文件中的內容,而不是打印輸出端子

的參考man sed

-i[SUFFIX], --in-place[=SUFFIX] 

       edit files in place (makes backup if extension supplied) 

通過備份
如果你想利用備份使用sed -i.bak現有的文件。

例子:

sed -i.bak 's/search/patter/' file_name.txt 

file_name.txt內容將更新的內容被改變,但你仍然有一箇舊的內容file_name.txt.bak

注:
之前發佈的任何追問,請搜索google與該問題相關並閱讀man頁面,以便您節省時間。