bash - 破折号到驼峰式
bash - dash case to camel case
我写了以下内容来将 foo-bar-baz
之类的内容转换为 FooBarBaz
sed -r 's/^(.)|-(.)/\U\U/g'
(如有不妥欢迎指正)
但是,它不适用于 busybox :(
我可以用 cut
、for
循环、bash 子字符串和 tr
拼凑一些东西,但必须有一个很好的衬垫使用 busybox 版本sed、awk 等等。想法?
我找到了一个 awk 脚本,它可以将每个单词的第一个字母大写。我使用 tr
将破折号转换为空格,运行 我窃取的脚本,然后使用 tr
删除空格:
echo "foo-bar-baz" \
| tr '-' ' ' \
| awk '{for(i=1;i<=NF;i++){ $i=toupper(substr($i,1,1)) substr($i,2) }}1' \
| tr -d ' '
注意,这只是我写的第二个 awk
脚本,所以不能保证
不过,一定有更好的方法。 . .
考虑到您的实际 Input_file(数据) 与显示的示例相同,如果是,那么以下 awk
(s) 可能会对您有所帮助。
echo "foo-bar-baz" |
awk -F"-" '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1)) substr($i,2)}} 1' OFS=""
解决方案 2: 使用 RS
、FS
和 ORS
awk
.
echo "foo-bar-baz" |
awk 'BEGIN{FS="";RS="-";ORS=""} {[=11=]=toupper(substr([=11=],1,1)) substr([=11=],2)} 1'
我写了以下内容来将 foo-bar-baz
之类的内容转换为 FooBarBaz
sed -r 's/^(.)|-(.)/\U\U/g'
(如有不妥欢迎指正)
但是,它不适用于 busybox :(
我可以用 cut
、for
循环、bash 子字符串和 tr
拼凑一些东西,但必须有一个很好的衬垫使用 busybox 版本sed、awk 等等。想法?
我找到了一个 awk 脚本,它可以将每个单词的第一个字母大写。我使用 tr
将破折号转换为空格,运行 我窃取的脚本,然后使用 tr
删除空格:
echo "foo-bar-baz" \
| tr '-' ' ' \
| awk '{for(i=1;i<=NF;i++){ $i=toupper(substr($i,1,1)) substr($i,2) }}1' \
| tr -d ' '
注意,这只是我写的第二个 awk
脚本,所以不能保证
不过,一定有更好的方法。 . .
考虑到您的实际 Input_file(数据) 与显示的示例相同,如果是,那么以下 awk
(s) 可能会对您有所帮助。
echo "foo-bar-baz" |
awk -F"-" '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1)) substr($i,2)}} 1' OFS=""
解决方案 2: 使用 RS
、FS
和 ORS
awk
.
echo "foo-bar-baz" |
awk 'BEGIN{FS="";RS="-";ORS=""} {[=11=]=toupper(substr([=11=],1,1)) substr([=11=],2)} 1'