2013-10-26 92 views
1

我想將字符串從大寫轉換爲小寫。我知道有解決這個問題的方式不同,但我想明白爲什麼這個命令不起作用:大寫字母與小寫與Sed和字符類

echo "aa" | sed 's/'[:upper:]'/'[:lower:]'/g' 

的是它使用的字符類錯誤的方式?

回答

1

sed中,y命令用於映射字符集:

sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' 

它需要字符的文字列表,而不是字符類。

+2

但無法使用[:upper:]或[:lower:]獲得更優雅的解決方案? – NCL

+5

並不如我所知。 'y'命令只適用於字符,不適用於類。你甚至不能寫'y/A-Z/a-z /'。 – Barmar

5

從小寫爲大寫,您可以使用

echo "aW123bR" | sed -r 's/[a-z]+/\U&/g' 

tr命令是一個有趣的選擇

echo "aW123bR" | tr '[:lower:]' '[:upper:]' 
1

與GAWK另一種可能的解決方案:

[ ~]$ echo "HELLO"|awk '{print tolower($0)}' 
hello 
相關問題