Mac OS X Unix使用正则表达式查找和替换

4
这是我的第一个问题,如果此前已经有答案,请谅解。我已经搜索过了,但没有找到我需要的答案。
我有大量从数据库导出的文本。对于某些属性内容,我需要找到每个空格后面跟着一个大写字母的实例,并将空格替换为分号(;)
例如:
First one Second one Third one Fourth one

Should become:

First one;Second one;Third one;Fourth one

使用Unix(Mac OS X)以下代码仅返回整行:
echo "First one Second one Third one Fourth one" | grep ' [A-Z]'

我该如何达成我想要的结果?非常感谢任何帮助或提示。 谢谢。
1个回答

2

使用sed来完成这样的任务:

$ echo "First one Second one Third one Fourth one" | sed -Ee 's/ ([A-Z])/;\1/g'
First one;Second one;Third one;Fourth one
  • 如果指定了-E选项,则使用扩展正则表达式。

  • s/pattern/replace-string/g查找模式并全局替换为replace-string。通过用(..)括起来,可以在替换字符串中稍后引用该模式。
  • [A-Z]匹配大写字母。

太好了!非常感谢您的快速回复。我尝试过awk和tr,但没有用sed! - intoto
抱歉,刚看到...“1”是干什么用的? - intoto
\1 反向引用第一组(由 (...) 包围的模式部分) - falsetru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接