正则表达式 - 替换if之前的字符而不是x

时间:2016-06-16 13:20:22

标签: regex sed

noob问题。

如果@之前的字符不是”,”

,我想将所有@替换为

增加此命令cat foo.csv | sed 's/@/","/g'

1 个答案:

答案 0 :(得分:2)

您可以使用

sed -r 's/(^|[^"])@/\1","/g'

其中(^|[^"])是匹配行的开头或"以外的字符的组。 \1是对组1的反向引用(空字符串或与[^"]括号表达式匹配的字符)。

对于没有-r的替代语法,请参阅Kent's comment(您需要将()|等特殊字符转义为表现为特殊的正则表达式元字符。)