使用 sed 在 yaml 文件的一组选定行中的每个大写字母前添加 space

Adding a space before each capital letter in a selected set of lines in a yaml file using sed

我想为 shell 脚本编写正则表达式。它用于仅匹配 yml 文件中的此类行。 (带有标签 summary 的行:Example Summary

summary: GetMembersSavedSearchesByMemberId

所以我想做的是在每个大写字母前添加一个space并像这样输出

summary: Get Members Saved Searches By Member Id

我试过这个正则表达式

matchregex="summary[:][[:space:]].\([A-Z]\)"
replacement="summary: ."
sed -e "s/${matchregex}/${replacement}/g"

它不起作用。正确的写法是什么?

请您尝试以下操作:

sed -E '/^summary:/ s/([a-z])([A-Z])/ /g'

结果:

summary: Get Members Saved Searches By Member Id

这可能对你有用 (GNU sed):

sed 's/\B[[:upper:]]/ &/g' file

全局插入一个space在后面的字符是大写的单词中。