1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00
Files
til/unix/transform-text-to-lowercase.md
2025-10-17 21:49:38 -05:00

884 B

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.