gpt4 book ai didi

shell - sed Capital_Case 不工作

转载 作者:行者123 更新时间:2023-12-01 09:16:41 24 4
gpt4 key购买 nike

我正在尝试将具有 -(连字符)或 _(下划线)的字符串转换为 Capital_Case 字符串。

#!/usr/bin/env sh

function cap_case() {
[ $# -eq 1 ] || return 1;
_str=$1;
_capitalize=${_str//[-_]/_} | sed -E 's/(^|_)([a-zA-Z])/\u\2/g'
echo "Capitalize:"
echo $_capitalize
return 0
}

read string
echo $(cap_case $string)

但我没有得到任何东西。

首先,我将所有出现的 -_ 替换为 _ ${_str//[-_]/_ },然后我将该字符串通过管道传递给 sed,它会找到第一个字母,或者 _ 作为第一组,然后是第一组之后的字母第二组,我想用 \u\2 将找到的字母大写。我尝试使用 \U\2 但效果不佳。

我希望字符串 some_string 成为

Some_String

和字符串some-string成为

Some_String

我在 mac 上,如果有帮助,我会使用 zsh。

最佳答案

编辑:此处使用更通用的解决方案,使每个字段的首字母大写。

echo "some_string_other" | awk -F"_" '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1)) substr($i,2)}} 1' OFS="_"

遵循 awk 可能会对您有所帮助。

echo "some_string" | awk -F"_" '{$1=toupper(substr($1,1,1)) substr($1,2);$2=toupper(substr($2,1,1)) substr($2,2)} 1' OFS="_"

输出如下。

echo "some_string" | awk -F"_" '{$1=toupper(substr($1,1,1)) substr($1,2);$2=toupper(substr($2,1,1)) substr($2,2)} 1' OFS="_"
Some_String

关于shell - sed Capital_Case 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49690216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com