有什么方法可以用 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"