使用Unix命令交替使用cApS

时间:2013-08-07 06:16:56

标签: regex unix sed awk tr

纯粹只是为了好玩,我想知道如何使用awksedtr,正则表达式或任何其他字母将所有小写文本转换为大写字母。除Python或Perl之外的Unix工具。

到目前为止,我已经尝试了

echo "hello" | sed s/\([a-z]\)/\U\1/g 

所需的输出应为HeLlO。如果有人能改进这一点或提供替代方法,我将不胜感激。

3 个答案:

答案 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