我有一个像AxxBCyyyDEFzzLMN这样的字符串,我想用_替换所有出现的x, y和z。
我怎样才能做到这一点呢?
我知道回声“$string”| tr 'x' '_' | tr 'y' '_'将工作,但我想做到这一点,不使用管道。
我有一个像AxxBCyyyDEFzzLMN这样的字符串,我想用_替换所有出现的x, y和z。
我怎样才能做到这一点呢?
我知道回声“$string”| tr 'x' '_' | tr 'y' '_'将工作,但我想做到这一点,不使用管道。
当前回答
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。
其他回答
echo 'I dont like PHP' | sed -r 's/I dont like/I love/g'
## Output: I love PHP
OR
echo 'I like PHP' | sed -r 's/like/love/g'
## Output: I love PHP
使用Bash参数展开:
orig="AxxBCyyyDEFzzLMN"
mod=${orig//[xyz]/_}
read filename ;
sed -i 's/letter/newletter/g' "$filename" #letter
^只要你需要,你可以使用很多这些,你可以自己做BASIC加密
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。
你可能会发现这个链接很有用: http://tldp.org/LDP/abs/html/string-manipulation.html。
通常,用$replacement替换$子字符串的第一个匹配项:
${string/substring/replacement}
用$replacement替换所有匹配的$substring:
${string//substring/replacement}
编辑: 注意,这适用于一个名为$string的变量。