我想將字符串從大寫轉換爲小寫。我知道有解決這個問題的方式不同,但我想明白爲什麼這個命令不起作用:大寫字母與小寫與Sed和字符類
echo "aa" | sed 's/'[:upper:]'/'[:lower:]'/g'
的是它使用的字符類錯誤的方式?
我想將字符串從大寫轉換爲小寫。我知道有解決這個問題的方式不同,但我想明白爲什麼這個命令不起作用:大寫字母與小寫與Sed和字符類
echo "aa" | sed 's/'[:upper:]'/'[:lower:]'/g'
的是它使用的字符類錯誤的方式?
在sed
中,y
命令用於映射字符集:
sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'
它需要字符的文字列表,而不是字符類。
從小寫爲大寫,您可以使用
echo "aW123bR" | sed -r 's/[a-z]+/\U&/g'
tr
命令是一個有趣的選擇
echo "aW123bR" | tr '[:lower:]' '[:upper:]'
與GAWK另一種可能的解決方案:
[ ~]$ echo "HELLO"|awk '{print tolower($0)}'
hello
但無法使用[:upper:]或[:lower:]獲得更優雅的解決方案? – NCL
並不如我所知。 'y'命令只適用於字符,不適用於類。你甚至不能寫'y/A-Z/a-z /'。 – Barmar