---
name: "tr"
section: "1plan9"
platform: "linux"
package: "9base"
version: "1:6-14"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/tr/1plan9"
---

# tr(1plan9)

translate characters

## NAME

tr - translate characters

## SYNOPSIS

**tr** \[ **-cds** \] \[ *string1* \[ *string2* \] \]

## DESCRIPTION

*Tr* copies the standard input to the standard output with substitution or deletion of selected characters (runes). Input characters found in *string1* are mapped into the corresponding characters of *string2*. When *string2* is short it is padded to the length of *string1* by duplicating its last character. Any combination of the options **-cds** may be used:

- **-c**

  Complement *string1*: replace it with a lexicographically ordered list of all other characters.

- **-d**

  Delete from input all characters in *string1*.

- **-s**

  Squeeze repeated output characters that occur in *string2* to single characters.

In either string a noninitial sequence **-***x,* where  *x* is any character (possibly quoted), stands for a range of characters: a possibly empty sequence of codes running from the successor of the previous code up through the code for *x*. The character followed by 1, 2 or 3 octal digits stands for the character whose 16-bit value is given by those digits. The character sequence followed by 1, 2, 3, or 4 hexadecimal digits stands for the character whose 16-bit value is given by those digits. A  followed by any other character stands for that character.

## EXAMPLES

Replace all upper-case ASCII letters by lower-case.

-

  ```
  tr A-Z a-z <mixed >lower
  ```

Create a list of all the words in one per line in where a word is taken to be a maximal string of alphabetics. *String2* is given as a quoted newline.

-

  ```
  tr -cs A-Za-z '
  ' <file1 >file2
  ```

## SOURCE

**/src/cmd/tr.c**

## SEE ALSO

[*sed*(1)](/sed/1.md)
