diff --git a/README.md b/README.md index fc2ebda..56213bd 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1661 TILs and counting..._ +_1662 TILs and counting..._ See some of the other learning resources I work on: - [Get Started with Vimium](https://egghead.io/courses/get-started-with-vimium~3t5f7) @@ -1687,6 +1687,7 @@ If you've learned something here, support my efforts writing daily TILs by - [Switch Versions of a Brew Formula](unix/switch-versions-of-a-brew-formula.md) - [Tell direnv To Load The Env File](unix/tell-direnv-to-load-the-env-file.md) - [Touch Access And Modify Times Individually](unix/touch-access-and-modify-times-individually.md) +- [Transform Text To Lowercase](unix/transform-text-to-lowercase.md) - [Type Fewer Paths With Brace Expansion](unix/type-fewer-paths-with-brace-expansion.md) - [Undo Changes Made To Current Terminal Prompt](unix/undo-changes-made-to-current-terminal-prompt.md) - [Undo Some Command Line Editing](unix/undo-some-command-line-editing.md) diff --git a/unix/transform-text-to-lowercase.md b/unix/transform-text-to-lowercase.md new file mode 100644 index 0000000..f2b9d32 --- /dev/null +++ b/unix/transform-text-to-lowercase.md @@ -0,0 +1,33 @@ +# Transform Text To Lowercase + +I was reading through [`setup.sh` in +dkarter/dotfiles](https://github.com/dkarter/dotfiles/blob/master/setup.sh#L7-L9) +and noticed this function for converting a given bit of text to all lowercase +letters. + +```bash +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`: + +```bash +lowercase() { + echo "$1" | tr '[:upper:]' '[:lower:]' +} +``` + +This has the added benefit of working across all kinds of UTF-8 characters. + +```bash +$ echo "ΑΛΦΑΒΗΤΟ ΕΛΛΑΔΑ" | tr '[:upper:]' '[:lower:]' +αλφαβητο ελλαδα +``` + +See `man tr` for more details.