使用 sed 查找和替换变量中的特定字符
Find and Replace Specific characters in a variable with sed
问题:我有一个包含字符的变量,我想在存储在变量中的同一个字符串中添加另一个字符
例如。 “[blahblahblah]”--->“\[blahblahblah\]”
目前的解决方案:目前我用两步完成我想要的,每一步攻击一个括号
例如
temp=[blahblahblah]
firstEscaped=$(echo $temp | sed s#'\['#'\['#g)
fullyEscaped=$(echo $firstEscaped | sed s#'\]'#'\]'#g)
这给了我想要的结果,但我觉得我可以使用 capturing groups. I've just had no luck and I'm getting burnt out. Most examples I come across involve wanting to extract the text between brackets instead of what I'm trying to do. This 在一行中完成此操作,这是我最近一次无济于事的尝试。有什么想法吗?
可能有更有效的方法,(只有 1 s/s/r/
有更高级的正则表达式),但这个有效,给定你的样本输入
fully=$(echo "$temp" | sed 's/\([[]\)/\/;s/\([]]\)/\/') ; echo "$fully"
输出
\[blahblahblah\]
请注意,可以将多个 sed
操作链接在一起,由 ;
分隔,或者如果在 sed
脚本文件中,则由空行分隔。
了解使用 \(...\)
对的 sed
捕获组,并按编号引用它们,即
。
IHTH
$ temp=[blahblahblah]
$ fully=$(echo "$temp" |sed 's/\[\|\]/\&/g'); echo "$fully"
\[blahblahblah\]
简要说明,
\[\|\]
:目标替换为“[”或“]”,以及“[”、“]”和“|”需要转义。
&
:字符&
表示匹配的模式,注意也需要转义。
根据@Gordon Davisson 的建议,您也可以使用括号表达式来避免扩展格式正则表达式,
sed 's/[][]/\&/g'
问题:我有一个包含字符的变量,我想在存储在变量中的同一个字符串中添加另一个字符
例如。 “[blahblahblah]”--->“\[blahblahblah\]”
目前的解决方案:目前我用两步完成我想要的,每一步攻击一个括号
例如
temp=[blahblahblah]
firstEscaped=$(echo $temp | sed s#'\['#'\['#g)
fullyEscaped=$(echo $firstEscaped | sed s#'\]'#'\]'#g)
这给了我想要的结果,但我觉得我可以使用 capturing groups. I've just had no luck and I'm getting burnt out. Most examples I come across involve wanting to extract the text between brackets instead of what I'm trying to do. This 在一行中完成此操作,这是我最近一次无济于事的尝试。有什么想法吗?
可能有更有效的方法,(只有 1 s/s/r/
有更高级的正则表达式),但这个有效,给定你的样本输入
fully=$(echo "$temp" | sed 's/\([[]\)/\/;s/\([]]\)/\/') ; echo "$fully"
输出
\[blahblahblah\]
请注意,可以将多个 sed
操作链接在一起,由 ;
分隔,或者如果在 sed
脚本文件中,则由空行分隔。
了解使用 \(...\)
对的 sed
捕获组,并按编号引用它们,即 。
IHTH
$ temp=[blahblahblah]
$ fully=$(echo "$temp" |sed 's/\[\|\]/\&/g'); echo "$fully"
\[blahblahblah\]
简要说明,
\[\|\]
:目标替换为“[”或“]”,以及“[”、“]”和“|”需要转义。&
:字符&
表示匹配的模式,注意也需要转义。
根据@Gordon Davisson 的建议,您也可以使用括号表达式来避免扩展格式正则表达式,
sed 's/[][]/\&/g'