替换子串

替换子串

有什么方法可以用 char 替换 string 吗?

例子 :

我有,

123456789 

并且,我想用 * 替换从位置 3 到位置 8 的所有字符,以产生此结果

12******9 

有没有办法也许使用

sed -i "s/${mystring:3:5}/*/g" ?

答案1

你可以分配一个变量var1=123456789

echo $var1会给123456789

然后var2="${var1:0:2}*****${var1:8:9}"

echo $var2会给12*****9

答案2

目前还不清楚数据在哪里。如果它在 shell 变量中那么

使用原始字符串的前两个字符、替换字符串和原始字符串的尾随字符构造一个新字符串。要么将其分配回原来的值,要么将其用作变量。决定是否要检查原始字符串是否短于 8 个字符。

mystring="${mystring:0:2}******${mystring:8}"

你可以做

mystring=${mystring/????????/${mystring{0:2}******}

如果它在文件中那么

sed 's/\(..\)......../\1********/' file

答案3

是的,您走在正确的道路上。

如果你想使用的sed话,

  • 将字符串输入 sed 中。
  • 删除-i标志
  • 删除g后缀,您仅替换一个字符串,即45678
  • 在替换字符串中添加适当数量的字符,即*****

    echo ${mystring}|sed "s/${mystring:3:5}/*****/g"

相关内容