纯粹只是为了好玩,我想知道如何使用awk
,sed
,tr
,正则表达式或任何其他字母将所有小写文本转换为大写字母。除Python或Perl之外的Unix工具。
到目前为止,我已经尝试了
echo "hello" | sed s/\([a-z]\)/\U\1/g
所需的输出应为HeLlO
。如果有人能改进这一点或提供替代方法,我将不胜感激。
答案 0 :(得分:1)
$ sed 's/[a-z].\?/\u\0/g' <<< hello
HeLlO
(免责声明:这可能取决于非标准功能。我在GNU sed版本4.2.1上运行它。)
答案 1 :(得分:1)
awk
方法:
echo "hello" | awk '{for(i=1;i<=NF;i+=2)$i=toupper($i)}1' FS= OFS=
HeLlO
答案 2 :(得分:1)
这可能适合你(GNU sed):
sed 's/[[:lower:]][^[:alpha:]]*\([[:alpha:]]\|$\)/\u&/g' file