Jabberbyter
Jabberbyter

Reputation: 81

BASH convert uppercase to lower case and vice versa at same time

How do i create a program that converts uppercase letters to lower case and vice versa at same time from a given file? I know how to convert each independently

#!/bin/sh
#Program convert upper to lower
cat $1 | tr '[:upper:]' '[:lower:]'

#!/bin/sh
#Program convert lower to upper
cat $1 | tr '[:lower:]' '[:upper:]'

e.g

hEllo to HeLLO

Upvotes: 4

Views: 3908

Answers (3)

Dzienny
Dzienny

Reputation: 3417

Since Bash 4.0 there is a double tilde parameter expansion ${parameter~~pattern} that toggles the case of all letters in parameter. An example:

echo "${1~~}"

However, as far as I know, this mechanism is not documented. Hence I do not recommend it for a production use. It is a bad practice to rely on undocumented features.

Upvotes: 0

jnlickey
jnlickey

Reputation: 9

tr '[A-Z]' '[a-z]' also works!

Upvotes: -2

Politank-Z
Politank-Z

Reputation: 3721

You can readily combine your two lines:

$ tr '[:upper:][:lower:]' '[:lower:][:upper:]' <<< "hEllo"
HeLLO

Upvotes: 5

Related Questions