2016-10-03 69 views
-4

我想用shell腳本替換linux文件中的一個字符串變量值: 嘗試在shell腳本中執行此操作,但無法正常工作。使用Shell腳本替換文件中的值

sed -i "s/$StrVal1/$StrVal2/" "$TargetFile"

請幫助。

+0

更具體。預期的輸出是什麼,你得到了什麼錯誤信息,...... –

+0

如果任一字符串包含斜線,例如,問題將完全被期望 - 但問題需要包含足夠的信息來知道是否是這種情況;就其本身而言,它僅包含足夠的細節以便負責。請參閱http://stackoverflow.com/help/mcve –

+0

......這個問題的更好的表述將包括正在編輯的實際文件內容(或者,如果這些內容是保密的,其他內容測試足以重現問題) ,並且同樣測試了特定的「StrVal1」和「StrVal2」值以重現問題。而不是「不工作」,它會精確地描述**它是如何失效的:有錯誤信息?一個成功的狀態,但沒有更改文件?還有別的嗎? –

回答

0

我想你忘了sed命令中的「g」。適用於我的Linux外殼。您也可以捕獲該文件,然後運行sed命令。

首先,我定義變量,如下圖所示,在提示:

a='class'; b='CLASS' 

然後我的貓用sed命令文件:

cat a.txt | sed "s/$a/$b/g" 

所以我的輸入文件就像

class="pending">Count 
    class="completed">Count 

我用那個命令的輸出就像

CLASS="pending">Count: 
    CLASS="completed">Count: