【发布时间】:2017-01-14 18:58:45
【问题描述】:
我正在尝试使用 sed 在非空白字符字符串的每个大写字母之前插入 _,除非它位于开头。 (我想转换驼峰式的字符串,偶尔包含几个相邻的大写字母甚至标点符号。)
期望的行为:
输入:
AaAaAa AAA AAA
输出:
Aa_Aa_Aa A_A_A A_A_A
我尝试使用以下命令:
sed -e "s/\(\S\)\([[:upper:]]\)/\1_\2/g"
但它在上述输入中的最后两个字符串上失败了,产生了这个:
Aa_Aa_Aa A_AA A_AA
我真的不明白为什么。
我使用的是 GNU sed 4.2.2。
【问题讨论】: