Regex 用特殊字符替换字符串

Regex 用特殊字符替换字符串,regex,linux,string,bash,sed,awk,Regex,Linux,String,Bash,Sed,Awk,在linux中,我试图用文件中的特殊字符替换下面指示的字符串。我尝试在每个特殊字符前面使用反斜杠,但出现了错误。一定是遗漏了什么。我如何实现以下目标。提前感谢: filter = [ "a/sda[0-9]*$/", "r/sd.*/" ] ---> Replace this line with below line filter = [ "a/sda[0-9]*$/", "a/sdb[0-9]*$/", "r/sd.*/" ] 以你为例,这是有效的 sed 's@",@", "

在linux中,我试图用文件中的特殊字符替换下面指示的字符串。我尝试在每个特殊字符前面使用反斜杠,但出现了错误。一定是遗漏了什么。我如何实现以下目标。提前感谢:

filter = [ "a/sda[0-9]*$/",  "r/sd.*/" ]   ---> Replace this line with below line

filter = [ "a/sda[0-9]*$/", "a/sdb[0-9]*$/", "r/sd.*/" ]

以你为例,这是有效的

sed 's@",@", "a/sdb[0-9]*$/",@' 
输出:

kent$  echo 'filter = [ "a/sda[0-9]*$/",  "r/sd.*/" ]'|sed 's@",@", "a/sdb[0-9]*$/",@'                                                         
filter = [ "a/sda[0-9]*$/", "a/sdb[0-9]*$/",  "r/sd.*/" ]
使用和列策略:

$ awk '{$3=$3 "a/sdb[0-9]*$/\042, "; print}' file.txt
filter = [a/sdb[0-9]*$/",  "a/sda[0-9]*$/", "r/sd.*/" ]

完美的工作得很有魅力。那么,你能帮我进一步理解这一点吗。因此,我们将当前字符串初始化为变量,并将其提供给sed,即@表示的字符串。我明白了。但是,下面的内容呢,这些引文到底是怎么回事?sed的@“,@”,“a/sdb[0-9]*$/”,@'在
sed
中,
s
(替换)命令后的任何字符都作为分隔符。因此,
sed的s/a/b/'
sed'相同s@a@b@'
。在这里,使用
@
可以确保不必转义字符串中的所有
/
等字符。好的,这很有趣。我之前问过这个问题:“,@”,肯特的解决方案就像:
sed的/“,/”,“a\/sdb[0-9]*$\/”,/”,
所以,
,“a/sdb[0-9]*$/”,