【问题标题】:camelCase to snake_case using the shell?使用shell的camelCase到snake_case?
【发布时间】:2020-08-11 10:00:56
【问题描述】:

使用命令 shell(例如 bash)将 camelCase 中的(以空格分隔的)单词转换为 snake_case 的简单方法是什么?

相对于我已删除的先前问题,这是一个更简单的案例。

【问题讨论】:

    标签: regex shell text-processing camelcasing snakecasing


    【解决方案1】:

    使用 GNU sed,您可以轻松地转换为小写字母并带有下划线前缀:

    $ echo camelCase andAnother | sed 's/[A-Z]/_\l&/g'
    camel_case and_another
    

    【讨论】:

    • 这就是我过于简化我的问题所得到的 :-( 很公平。最初我也想处理 thisKINDOfIdentifiers。
    • 您可以将\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
    • (如果你愿意,我可以给出一个完整的答案来解释,但不是现在)
    猜你喜欢
    • 1970-01-01
    • 2021-11-06
    • 2020-11-08
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多