我的目标是有一个一行程序来生成一个由变量名和它的值组成的变量列表。当删除前导斜杠“/”或点“.”或破折号“-”时,value必须保持“as-is”,而变量的name必须是CamelCase。
输入示例:
auto-scaling/v2/HorizontalPodAutoscaler
v1/Service
apiextensions.k8s.io/v1/CustomResourceDefinition
字符串
预期输出:
AutoScalingV2HorizontalPodAutoscaler.$ : "auto-scaling/v2/HorizontalPodAutoscaler"
V1Service.$ : "v1/Service"
ApiextensionsK8sIoV1CustomResourceDefinition.$ : "apiextensions.k8s.io/v1/CustomResourceDefinition"
型
我在stackoverflow中发现了一些线索,可以使用awk或sed在CamelCase中转换完整的字符串,但这些都是针对完整的 * 行 *,而我只会在.$”之前的部分(或者“:“,因为我可以在“.$“部分之后添加)
echo "apiextensions.k8s.io/v1/CustomResourceDefinition" | sed -r 's/(^|[-_/\.]+)([0-9a-z])/\U\2/g'
ApiextensionsK8sIoV1/CustomResourceDefinition
echo "apiextensions.k8s.io/v1/CustomResourceDefinition" | awk 'BEGIN{FS="";RS="[-./]";ORS=""} {$0=toupper(substr($0,1,1)) substr($0,2)} 1'
ApiextensionsK8sIoV1CustomResourceDefinition
型
3条答案
按热度按时间cwdobuhd1#
您可以使用下面的awk来实现您的目的:
字符串
以上命令说明:
*
BEGIN{FS="";RS="[-./]";ORS=""}
-设置分隔符。*
FS=""
-字段分隔符(FS)设置为使每个字符表现得像一个单独的字段。*
RS="[-./]"
-记录分隔符(RS)设置为匹配[-./]
的正则表达式,并根据[-./]
进行分隔。您可以根据具体目的添加或删除它们。*
ORS=""
-设置输出记录分隔符(ORS)以避免打印新行。*
{toupper(substr($0,1,1))
-它将记录的第一个字符转换为字符串,并将其添加到输出中。*
substr($0,2)
-将输入的其余部分转换为输出记录。*
1
-{print}
当前记录的简写。rwqw0loc2#
使用任何awk:
字符串
zd287kbt3#
这可能对你有用(GNU sed):
字符串
复印一份。
CamelCase变量。
添加副本。
产生所需的输出。