您好我想在Solaris OS中大写变量。
从HELLO_WORLD到Hello_World
或者你好,你好
请帮助,这是Solaris OS:
Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC版权所有(c)1983,2011,Oracle和/或其附属公司。版权所有。 2011年8月23日组装
答案 0 :(得分:1)
如果你有Perl:
% echo HELLO_WORLD FOO bar | perl -pe '($_ = lc $_) =~ s/(\b|_)./\U$&/g'
Hello_World Foo Bar
perl -pe
从标准输入读取并在应用作为参数给出的Perl代码后打印每一行。 $_
是当前行。 lc
函数将字符串转换为小写。正则表达式匹配单词边界或下划线,后跟任何字符。 s///
命令用大写的等效项替换任何匹配的子字符串。尾随g
导致在每一行上尽可能多地执行替换(默认情况下,它只执行一次)。
如果你没有Perl(我不知道Solaris默认是否包含它),试试这个:
% echo HELLO_WORLD FOO bar | tr A-Z a-z | sed 's/\(_\|\<\)./\U&/g'
Hello_World Foo Bar
您可以使用sed
将大小写映射合并到y///
命令中,但与tr
不同,它似乎不接受范围:
% echo HELLO_WORLD FOO bar | tr A-Z a-z | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;s/\(_\|\<\)./\U&/g'
Hello_World Foo Bar