2017-05-05 109 views
1

我只是想更換一些預定義的字符串在shell腳本:如何在Shell腳本中替換完全匹配的單詞?

字符串是這樣的:

#! /bin/bash 
CONTENT="DEAR [NAME]" 

我想與約翰替換[NAME]。 我用下面的代碼:

#! /bin/bash 
CONTENT="DEAR [NAME]" 
echo "$CONTENT" | sed -r 's/[[NAME]]+/John/g' 

得到了下面的結果; 親愛的[NAMJhon

我需要像這樣的結果「親愛的Jhon」。

回答

2

你必須逃離[] S:

$ echo $CONTENT | sed 's/\[NAME\]/John/' 
DEAR John 

但這種情況下,你可以去只擊:

$ echo ${CONTENT/\[NAME\]/John} 
DEAR John 
+0

我需要一個更多的幫助;假設[NAME]在String中是兩次,我想替換兩個,在上面的代碼中,Code只替換了[NAME]的第一個出現。 – AmitChaudhary

+0

對於'sed',最後加上'g':'sed's/\ [NAME \]/John/g''。我需要檢查bash。 –

+0

對於bash,它是:'echo $ {CONTENT // \ [NAME \]/John}'(兩個'//'開頭)。 ([This](http://tldp.org/LDP/abs/html/string-manipulation.html)供參考) –

1

使用轉義序列。

#! /bin/bash 
CONTENT="DEAR [NAME]" 
echo "$CONTENT" | sed 's/\[NAME\]/John/g' 

給出輸出

絕交