Regex 在两个不同字符串之间搜索和替换内容
我的要求比现有答案稍微复杂一些 上面的代码块使用不同的rgb值重复多次。因此,简单的搜索和替换不起作用 我想用以下内容替换上述模块:Regex 在两个不同字符串之间搜索和替换内容,regex,sed,Regex,Sed,我的要求比现有答案稍微复杂一些 上面的代码块使用不同的rgb值重复多次。因此,简单的搜索和替换不起作用 我想用以下内容替换上述模块: \addplot3[% surf, z buffer=sort, colormap={my}{rgb255=(20,20,20) rgb255=(50,50,50) rgb255=(250,250,250) }, mesh/rows=21] 每次更换的内容相同 如前所述,我尝试了\addplot3[作为WORD1和},作为WORD2和我的要求surf,z buf
\addplot3[%
surf, z buffer=sort, colormap={my}{rgb255=(20,20,20) rgb255=(50,50,50) rgb255=(250,250,250) }, mesh/rows=21]
每次更换的内容相同
如前所述,我尝试了\addplot3[
作为WORD1
和},
作为WORD2
和我的要求surf,z buffer=sort,colormap={my}{rgb255=(20,20,20)rgb255=(50,50)rgb255=(250250)
AsWORD3
在上面的答案链接中:
sed -i 's/(\addplot3[).*(},)/\1 surf, z buffer=sort, colormap={my}{ rgb255=(20,20,20) rgb255=(50,50,50) rgb255=(250,250,250) \2/g' multiparticle_random.tex
我得到以下错误:
sed: -e expression #1, char 126: unterminated `s' command
是否有人可以帮助完成此搜索和替换操作
也欢迎使用适用于Linux而非
sed
的解决方案。您应该首先匹配以\\addplot3\[%
(监视转义字符)开头的行,然后将下一行读入模式空间(sed
每次只取一行)并执行替换命令。要使用sed
(POSIX BRE)捕获组,应将其转义为\(…\)
,或者使用-r
选项:
sed '/\\addplot3\[%/{N;s/\(.*\)\n.*\(},.*\)/\1 surf, z buffer=sort, colormap={my}{ rgb255=(20,20,20) rgb255=(50,50,50) rgb255=(250,250,250) \2/g}' file
因此,您的替换是不变的,不会发生任何变量?例如,将
X
替换为Y
,其中X
和Y
保持相同的内容。请也显示完整的sed
命令。sed-i的s/(\addplot3[)*(},)/\1 surf,z buffer=sort,colormap={my}{rgb255=(20,20,20)rgb255=(50,50,50)rgb255=(250250)\2/g'multiparticle_random.tex
是的替换是恒定的。答案有用吗?也许我可以改进。
sed '/\\addplot3\[%/{N;s/\(.*\)\n.*\(},.*\)/\1 surf, z buffer=sort, colormap={my}{ rgb255=(20,20,20) rgb255=(50,50,50) rgb255=(250,250,250) \2/g}' file