我有一个类似AxxBCyyyDEFzzLMN
的字符串,我想用_
替换所有出现的x
、y
和z
。
我如何才能做到这一点?
我知道echo "$string" | tr 'x' '_' | tr 'y' '_'
可以工作,但我想一气呵成,不使用管道。
发布于 2010-05-20 13:27:28
echo "$string" | tr xyz _
会将每次出现的x
、y
或z
替换为_
,在示例中给出A__BC___DEF__LMN
。
echo "$string" | sed -r 's/[xyz]+/_/g'
将用单个_
替换重复出现的x
、y
或z
,在您的示例中给出A_BC_DEF_LMN
。
发布于 2010-05-20 13:21:01
orig="AxxBCyyyDEFzzLMN"
mod=${orig//[xyz]/_}
发布于 2014-12-09 08:14:09
您可能会发现此链接很有帮助:
http://tldp.org/LDP/abs/html/string-manipulation.html
总体而言,
要将第一个匹配的$substring替换为$replacement,请执行以下操作:
${string/substring/replacement}
要使用$replacement替换所有匹配的$substring,请执行以下操作:
${string//substring/replacement}
编辑:请注意,这适用于名为$string的变量。
https://stackoverflow.com/questions/2871181
复制相似问题