Linux Admin – tr Command

  • Post author:
  • Post category:Linux
  • Post comments:0 Comments

Following is the syntax for tr. This command translates or deletes characters.

tr [OPTION] SET1 [SET2]

Following are the commonly used switches and character classes with tr.

CommandAction
-dDelete
-sSqueeze repeated text in SET1 with a single occurrence in SET2
[:alnum:]Alphanumeric characters
[:alpha:]All letters
[:digit:]All digits
[:blank:]All horizontal whitespace
[:space:]All horizontal or vertical whitespace
[:graph:]All printable characters, not including spaces
[:print:]All printable characters, including spaces
[:punct:]All punctuation characters
[:lower:]All lowercase characters
[:upper:]All uppercase characters

tr is commonly used to translate or delete characters in a string. Think of tr as a simpler alternative to sed’s substitute command. Reading from stdin versus a file.

When thinking should one go with “use sed” or “use tr“, it is better to go with keeping it simple philosophy. If an operation is simple in tr; use it. However, once you start thinking about using tr recursively, it is better to use sed’s substitution command.

Typically, tr will replace [SET1] with characters in [SET2] unless the -d switch is used. Then, the characters from the stream in [SET1] will be deleted.

Using tr on our names.txt file to turn all lower case characters into an upper case −

[root@centosLocal Documents]# tr [:lower:] [:upper:]  < names.txt 

TED:DANIEL:101

JENNY:COLON:608

DANA:MAXWELL:602

MARIAN:LITTLE:903

BOBBIE:CHAPMAN:403

NICOLAS:SINGLETON:203

DALE:BARTON:901

AARON:DENNIS:305

SANTOS:ANDREWS:504

JACQUELINE:NEAL:102

[root@centosLocal Documents]#

Let’s turn the “:” character back into a Tab −

[root@centosLocal Documents]# tr [:]  [\\t] < names.txt 

Ted Daniel  101

Jenny   Colon     608

Dana    Maxwell    602

Marian      Little  903

Bobbie      Chapman 403

Nicolas Singleton   203

Dale    Barton  901

Aaron   Dennis  305

Santos      Andrews    504

Jacqueline  Neal    102

[root@centosLocal Documents]#

What if wanted to save the results? Pretty easy using redirection.

[root@centosLocal Documents]# tr [:]  [\\t]  < names.txt >> tabbedNames.txt

[root@centosLocal Documents]# cat tabbedNames.txt 

Ted Daniel  101

Jenny   Colon   608

Dana    Maxwell 602

Marian  Little  903

Bobbie  Chapman 403

Nicolas Singleton   203

[root@centosLocal Documents]#

Let’s use the -s or squeeze option on poorly formatted text −

[root@centosLocal Documents]# cat lines.txt

line 1

line     2

line  3

line                      4

line      5

[root@centosLocal Documents]# tr -s [:blank:] ‘ ‘ < lines.txt >> linesFormat.txt

[root@centosLocal Documents]# cat linesFormat.txt 

line 1

line 2

line 3

line 4

line 5

[root@centosLocal Documents]#

Leave a Reply