2013-12-12 62 views
2

的sed我有一個像使用特殊字符在變量

cat File 
cd-car~1~3 

我想替換$ STRING1我用下面的代碼CD-車的要求

$string1=cd-p&c 
sed -i "s/cd-car~/$string1~/g' File 

我得到以下輸出

cat File 
~1~3 

請幫我

+0

你想更換'CD-car'以字符串'$ string1',或在變量中的值'$ string1' – Jotne

+0

@jotne我希望$ string1是變量 – Pranee

+0

像我的答案? – Jotne

回答

2

報價cd-p&c。否則,執行c命令;並沒有設置爲string1變量。

$ string1=cd-p&c 
[1] 6137 
c: command not found 
[1]+ Done     string1=cd-p 
$ echo $string1 

$ 

&字符是在sed的s///命令的替換零件特殊:它是由與該模式匹配的文本替換。如果你想有一個文字&你要逃避它,

$ string1='cd-p\&d' 
$ echo $string1 
cd-p&d 
$ sed -i "s/cd-car~/$string1~/g" File 
$ cat File 
cd-p&c~1~3 
+0

仍然得到相同的輸出 – Pranee

+0

我得到的輸出爲cd-pcd-car〜c〜1〜2 – Pranee

+0

這對我來說工作得很好'cd-p \&d' – Pranee

1

您可以使用awk

awk '{sub(/cd-car/,"$string1")}1' file 
$string1~1~3