在 vi/sed 中的模式之间更改字符

Changing a character in between patterns in vi/sed

我正在努力研究如何从各种模式中获取 , ,例如: 500,000 xyz ,CA

我试过类似的东西:

sed -E "s/\([a-zA-Z]*\),([a-zA-Z]*\)/\([a-zA-Z]*\) ([a-zA-Z]*\)/g" $file -i

它选择了第一个模式,但随后用第二个模式覆盖了它,我觉得我遗漏了一些非常简单的东西,我无法解决,非常感谢任何帮助。

我认为您忽略了捕获组的概念。要在替换字符串中引用括号内的搜索部分,请对第一组使用 </code>,对第二组使用 <code>,依此类推。

修改后的行将是:

sed -E "s/([a-zA-Z]),([a-zA-Z])/ /g" $file -i

而不是将与第一个 ([a-zA-Z]) 匹配的部分替换为文字文本“([a-zA-Z])”,此修改后的行只是将匹配部分复制到输出中(第二组也是如此) .