【发布时间】:2020-08-11 10:00:56
【问题描述】:
使用命令 shell(例如 bash)将 camelCase 中的(以空格分隔的)单词转换为 snake_case 的简单方法是什么?
相对于我已删除的先前问题,这是一个更简单的案例。
【问题讨论】:
标签: regex shell text-processing camelcasing snakecasing
使用命令 shell(例如 bash)将 camelCase 中的(以空格分隔的)单词转换为 snake_case 的简单方法是什么?
相对于我已删除的先前问题,这是一个更简单的案例。
【问题讨论】:
标签: regex shell text-processing camelcasing snakecasing
使用 GNU sed,您可以轻松地转换为小写字母并带有下划线前缀:
$ echo camelCase andAnother | sed 's/[A-Z]/_\l&/g'
camel_case and_another
【讨论】:
\lsinto ae\L 全部变为小写。不过,模式必须更复杂。简单地在[A-Z] 之后添加+ 会占用太多字符。您可能需要先行才能真正处理它,我不知道 POSIX ERE 是否支持这些。
sed 命令:sed -r -e 's/^([A-Z]+)([A-Z])/\L\1\E\2/' -e 's/^[A-Z]/\l&/' -e 's/[A-Z]+$/_\L&/' -e 's/([A-Z]+)([A-Z])/_\L\1\E\2/g' -e 's/[A-Z]/_\l&/g' 会做到这一点,用 line 分隔的单词而不是 空格分隔的。这也处理PascalCase 而不是camelCase。