如何使用sed -i命令在文件指定行范围内替换指定字符?
使用sed -i替换指定行范围内的指定字符
没问题,这个需求用sed的行范围匹配结合替换命令就能轻松实现,直接给你可用的命令:
sed -i '4,8s/#//g' your_file.txt
命令拆解:
-i:直接修改原文件(如果想先测试效果不修改原文件,可以去掉-i,把结果输出到终端查看)4,8:指定操作的行范围,这里是第4行到第8行(包含首尾两行)s/#//g:替换命令的核心:s:表示启动替换操作#:要被替换的目标字符//:替换后的内容(这里为空,也就是直接删除#)g:全局替换标记,意思是每行内所有匹配的#都会被替换,而不是只替换第一个匹配项
针对macOS用户的注意事项:
如果你用的是macOS系统,自带的是BSD版本的sed,使用-i参数时需要额外加一个空字符串(避免自动生成备份文件),命令改为:
sed -i '' '4,8s/#//g' your_file.txt
效果验证:
拿你给出的示例文件执行命令后,第4-8行的#会被全部删除,最终文件内容会变成:
some text here some text here some text here here1 here2 here3 here4 here5 erverv ererver
内容的提问来源于stack exchange,提问作者MiGo
相关产品推荐
相关产品推荐

