regex - 如何替换sed中匹配字符串中所有出现的字符
问题描述
我想替换,
匹配字符串中所有出现的字符,例如sed
. 匹配的字符串如下所示:
[cite!abc,cde]
我想将其替换为:
[!cite](abc, cde)
替换外部格式的命令是:
sed 's/\[cite\!\([^]]+\)\]/\[\!cite\]\(\1\)/g' file
这使
[!cite](abc,cde)
但是,我想在后面加上空格,,
并且可能有任意数字或逗号分隔的条目,例如
[cite!abc,cde,def,fgh]
有没有一种优雅的方法可以做到这一点,sed
还是我需要求助于 perl 脚本?
解决方案
如果保证输入字符串中逗号后没有空格:
sed 's/,/, /g' file
如果输入字符串中的逗号后确实有空格,则输出中会出现额外的空格。
编辑:
如果某些元素中的逗号后可能有空格,您可以避免添加更多:
sed 's/,\([^ ]\)/, \1/g' file
$ echo '1, 2, 3,4,5,6' | sed -e 's/,\([^ ]\)/, \1/g'
1, 2, 3, 4, 5, 6
推荐阅读
- python-3.x - 我希望我的 python 语音识别工作在事件发生之间
- python - 如何在 3d 空间中定义一个自定义的矢量点类并计算它们的中心(平均)点?
- java - Spring boot+ 2 阶段 commit+ atomikos 未启动
- swift - SwiftUI .onDisappear
- reactjs - '(e:更改事件
) => void' 不可分配给类型 '((event: ChangeEvent ) => 无效) - elasticsearch - 通过 Logstash 更新时,弹性文档的 @version 不会增加
- php - Gravity Forms 以编程方式附加购物车项目属性
- grails - 根据 grails 域中具有多列的布尔字段值使字段唯一
- javascript - 如何将用户输入的整数收集到数组中(对其进行排序)并将最小值输出到网页
- visual-studio-code - 在 VS Code 中一次击键执行多个命令