TR(1) TR(1) tr - translate or delete characters tr [OPTION]... STRING1 [STRING2] Translate, squeeze, and/or delete characters from standard input, writing to standard output. STRING1 and STRING2 specify arrays of characters ARRAY1 and ARRAY2 that control the action. -c, -C, --complement use the complement of ARRAY1 -d, --delete delete characters in ARRAY1, do not translate -s, --squeeze-repeats replace each sequence of a repeated character that is listed in the last specified ARRAY, with a single occurrence of that character -t, --truncate-set1 first truncate ARRAY1 to length of ARRAY2 --help --version ARRAYs are specified as strings of characters. Most represent themselves. Interpreted sequences are: \NNN NNN (1 3 ) \\ \a \b \f \n \r \t \v 1-2 1 2 [*] in ARRAY2, copies of CHAR until length of ARRAY1 [*] , 0 [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] , [:lower:] [:print:] , [:punct:] [:space:] [:upper:] [:xdigit:] [==] Translation occurs if -d is not given and both STRING1 and STRING2 appear. -t is only significant when translating. ARRAY2 is extended to length of ARRAY1 by repeating its last character as necessary. Excess characters of ARRAY2 are ignored. Character classes expand in unspecified order; while translating, [:lower:] and [:upper:] may be used in pairs to specify case conversion. Squeezing occurs after translation or deletion. BUGS Full support is available only for safe single-byte locales, in which every possible input byte represents a single character. The C locale is safe in GNU systems, so you can avoid this issue in the shell by running LC_ALL=C tr instead of plain tr. . coreutils: Copyright (C) 2023 Free Software Foundation, Inc. 3+: 3 . : . , . ,,info '(coreutils) tr invocation'" ; 3 . . , - TODO <>. coreutils 9.4 2024 TR(1)