如何用sed正则表达式替换依赖相邻字符的单个字符(无前瞻)?
用sed去除单词间误加的单个点
我在补全点字符时,第一列单词之间被误添加了单个点,需要用sed和正则表达式去除这些点,但sed不支持前瞻语法,不知道如何匹配依赖相邻字符的单个点。目标转换如下:
原始文本:
This.is.my.action ............. done
目标文本:This is my action ............. done
解决方案
可以利用sed的分组捕获与反向引用,精准匹配字母与字母之间的单个点,将其替换为空格,不会影响后面连续的补全点。执行以下命令即可:
sed 's/\([a-zA-Z]\)\.\([a-zA-Z]\)/\1 \2/g' 文件名
命令解释
\([a-zA-Z]\):捕获点前后的英文字母(支持大小写),分别保存为第1、第2分组\.:匹配需要替换的单个点(转义后才会匹配字面意义的点,否则是通配符)\1 \2:将匹配到的内容替换为「第1分组字母 + 空格 + 第2分组字母」g:全局替换标记,确保一行中所有符合条件的点都会被处理
内容的提问来源于stack exchange,提问作者Namal
相关产品推荐
相关产品推荐

