Skip to content

Latest commit

 

History

History
33 lines (25 loc) · 884 Bytes

File metadata and controls

33 lines (25 loc) · 884 Bytes

Transform Text To Lowercase

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.