I was reading through setup.sh in
dkarter/dotfiles
and noticed this function for converting a given bit of text to all lowercase
letters.
lowercase() {
echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
}It's an interesting use of sed, but it made me wonder if tr was a better
tool for this job. I looked into it and tr is better suited to the task, more
expressive, and also compatible across Mac and Linux.
Here is what it looks like with tr:
lowercase() {
echo "$1" | tr '[:upper:]' '[:lower:]'
}This has the added benefit of working across all kinds of UTF-8 characters.
$ echo "ΑΛΦΑΒΗΤΟ ΕΛΛΑΔΑ" | tr '[:upper:]' '[:lower:]'
αλφαβητο ελλαδαSee man tr for more details.