在变量中使用sed中的特殊字符

时间:2013-12-12 19:06:40

标签: unix sed symbols

我有像

这样的要求
cat File
cd-car~1~3

我想用$ string1替换cd-car我使用下面的代码

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

我收到以下输出

cat File
~1~3

请帮帮我

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以使用awk

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