Use the tr command to convert all incoming text / words / variable data from upper to lower case or vise versa (translate all uppercase characters to lowercase). Bash version 4.x+ user [donotprint]
Tutorial details | |
---|---|
Difficulty | Easy (rss) |
Root privileges | No |
Requirements | None |
Time | 2m |
Convert all text in a file from UPPER to lowercase
To translate or delete characters use tr command. The basic syntax is:
tr 'set1' 'set2' input
OR
tr 'set1' 'set2' input > output
Type the following command at shell prompt:
$ tr '[:upper:]' '[:lower:]' output.txt
$ cat output.txt
Task: Convert Data Stored in a Shell Variable From UPPER to lowercase:
Type the following command:
$ echo $VAR_NAME | tr '[:upper:]' '[:lower:]'
$ echo $VAR_NAME | tr '[:lower:]' '[:upper:]'
Bash version 4.x+: Uppercase to lowercase or vice versa
The bash version 4.x+ got some interesting new features. Type the following commands to convert $y into uppercase:
y="this Is A test" echo "${y^^}"
Sample outputs:
THIS IS A TEST
Type the following commands to convert $y into lowercase:
y="THIS IS a TeSt" echo "${y,,}"
Sample outputs:
this is a test
Sample Shell Script
#!/bin/bash # get filename echo -n "Enter File Name : " read fileName # make sure file exits for reading if [ ! -f $fileName ]; then echo "Filename $fileName does not exists." exit 1 fi # convert uppercase to lowercase using tr command tr '[A-Z]' '[a-z]' < $fileName # Note Bash version 4 user should use builtins as discussed above
Recommended readings:
- See tr command shell scripting example for more information.
- Man page – bash(1)
# Additional correction by D.K.; Editing by VG – log #
🐧 23 comments so far... add one ↓
Category | List of Unix and Linux commands |
---|---|
File Management | cat |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Network Utilities | dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time |
Searching | grep • whereis • which |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
This work fine when using latin characters, but not when using Unicode characters. For example a string with Cyrillic characters (“Английский”) doesn’t get converted. Any tips on how to do that?
Well, tr has no way of knowing what are uppercase and what are lowercase cyrillic characters. You need to provide it with this information.
tr
The example above is equivalent to:
Damn I didn’t notice this thing had html tags enabled and used angled brackets in my post. I meant:
tr [all uppercase cyrillic characters] [their lowercase equivalent]
instead of just ‘tr’
Is there any options so that Other than first letter of a word get converted to lowercase
show the correct program fully
Is there any options so that Other than first letter of a word get converted to lowercase
You mean preserve the first and translate the rest? How about:
echo $(echo $VAR_NAME | cut -c1)$(echo $VAR_NAME | cut -c2- | tr [A-Z] [a-z])
If you just want to change the case of the file extension, here is one way to do it:
for f in *.TXT; do mv $f `basename $f .TXT`.txt; done;
Thanks for this opportunity, to ask this question, This is my question.
HOW DO I TRANSLATE TEXT IN A FILE FROM ONE CASE TO ANOTHER.
cat | tr [[:upper:]] [[:lower:]]
hey guys your info has been really helpful. I m an Mca student and am vry good in C lang. Since it is embedd in ma brain, i feel it very hard to learn another script lang llike Unix but i want to perforn in Unix too. Could please help me by providn som basic tips so i can learn shell progming quickly.
Ur help vl b greatly appreciated
Nice example it helped my issue
In bash 4, the easiest and by far the most elegant way to do this for lowercase is:
echo ${string,,*}
and for uppercase:
echo ${string^^*}
This doesn’t work with the old Solaris version of tr, you need to use the GNU version in /usr/xpg4/bin on Solaris.
Is this a backslash, or a single quote?
$ echo ibm | awk ‘{ print toupper($1); }’
IBM
Works also.
perl -pe ‘$_=uc’
I need to write a shell script that copies a list of files from one directory to another. During copying the script should capitalize the first letter of the filename and lowercase all other letters.
I need the script as soon as possible.Please
no use…
Another way (use “ucase” or “lcase”):
try this:
for it in d f; do find -depth -type $it |sort -r |while read aa; do mv "$aa" "${aa,,}"; done ; done
for UserName in `cat users` ;
PassWord=$( echo $( tr ‘[:lower:]’ ‘[:upper:]’ <<< ${UserName:0:1} )${UserName:1} ) ;
can i understand cearly what does this code do to
text in the users file
apple
boy
cat
Every file in the directory starting with a capital P to lower cases
for i in `ls P*`; do mv $i $(echo $i | tr [[:upper:]] [[:lower:]]); done