2013-08-07 30 views
1

純粹只是爲了好玩,我想知道如何使用awk,sed,tr,正則表達式或除Python或Perl以外的任何其他Unix工具將所有小寫字母轉換爲大寫字母。使用Unix命令的交替cApS

到目前爲止,我已經試過

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

所需的輸出應爲HeLlO。如果有人能改善這種情況或提供替代方法,我將不勝感激。

回答

1

awk方法給你:

echo "hello" | awk '{for(i=1;i<=NF;i+=2)$i=toupper($i)}1' FS= OFS= 
HeLlO 
1
$ sed 's/[a-z].\?/\u\0/g' <<< hello 
HeLlO 

(免責聲明:這可能取決於非標準的特性,我跑這對GNU sed的版本4.2.1。)

1

這可能爲你工作(GNU sed):

sed 's/[[:lower:]][^[:alpha:]]*\([[:alpha:]]\|$\)/\u&/g' file