linux下如何替换文件中每一行指定位置字符串

例如:把每一行中第5个字符开始至第10个字符替换成 * 号
111111111111111111111
222222222222222222222
333333333333333333333
444444444444444444444

替换后的结果
1111******11111111111
2222******22222222222
3333******33333333333
4444******44444444444

我这里使用的是代码截取的方式来输出的,既然你要删除的是第五个到第十个字符,那么我就取前四个,以及第10个以后的字符,然后再中间加上六个*号,就能拼接出所需要的字符串。代码如下:
for line in $(cat test.txt);
do
echo "${line:0:4}******${line:11}"
done
第一个变量${line:0:4}表示从一行第0个开始取,取4个,中间加上6个星号,第二个${line:11}变量表示从第11个开始取,一直取到最后一位。这样拼接起来就是你需要的内容了,如果想把这些内容重新输入到文件中,加上一个重定向就可以了,不知道我说清楚没有,希望可以帮助到你。追问

我这个后边还有好多数据,想达到的效果如图所示,刚用您的方法,对于前边没有空格的适用,这个样子的乱了,请赐教

温馨提示:答案为网友推荐,仅供参考
相似回答