19b50d902SRodney W. Grimes.\" Copyright (c) 1991, 1993 29b50d902SRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 39b50d902SRodney W. Grimes.\" 49b50d902SRodney W. Grimes.\" This code is derived from software contributed to Berkeley by 59b50d902SRodney W. Grimes.\" the Institute of Electrical and Electronics Engineers, Inc. 69b50d902SRodney W. Grimes.\" 79b50d902SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 89b50d902SRodney W. Grimes.\" modification, are permitted provided that the following conditions 99b50d902SRodney W. Grimes.\" are met: 109b50d902SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright 119b50d902SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer. 129b50d902SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright 139b50d902SRodney W. Grimes.\" notice, this list of conditions and the following disclaimer in the 149b50d902SRodney W. Grimes.\" documentation and/or other materials provided with the distribution. 159b50d902SRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software 169b50d902SRodney W. Grimes.\" must display the following acknowledgement: 179b50d902SRodney W. Grimes.\" This product includes software developed by the University of 189b50d902SRodney W. Grimes.\" California, Berkeley and its contributors. 199b50d902SRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors 209b50d902SRodney W. Grimes.\" may be used to endorse or promote products derived from this software 219b50d902SRodney W. Grimes.\" without specific prior written permission. 229b50d902SRodney W. Grimes.\" 239b50d902SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 249b50d902SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 259b50d902SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 269b50d902SRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 279b50d902SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 289b50d902SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 299b50d902SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 309b50d902SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 319b50d902SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 329b50d902SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 339b50d902SRodney W. Grimes.\" SUCH DAMAGE. 349b50d902SRodney W. Grimes.\" 359b50d902SRodney W. Grimes.\" @(#)tr.1 8.1 (Berkeley) 6/6/93 36c3aac50fSPeter Wemm.\" $FreeBSD$ 379b50d902SRodney W. Grimes.\" 38e263a4b4STim J. Robbins.Dd July 9, 2004 399b50d902SRodney W. Grimes.Dt TR 1 409b50d902SRodney W. Grimes.Os 419b50d902SRodney W. Grimes.Sh NAME 429b50d902SRodney W. Grimes.Nm tr 439b50d902SRodney W. Grimes.Nd translate characters 449b50d902SRodney W. Grimes.Sh SYNOPSIS 458fe908efSRuslan Ermilov.Nm 46dfac4f36STim J. Robbins.Op Fl Ccsu 479b50d902SRodney W. Grimes.Ar string1 string2 488fe908efSRuslan Ermilov.Nm 49dfac4f36STim J. Robbins.Op Fl Ccu 509b50d902SRodney W. Grimes.Fl d 519b50d902SRodney W. Grimes.Ar string1 528fe908efSRuslan Ermilov.Nm 53dfac4f36STim J. Robbins.Op Fl Ccu 549b50d902SRodney W. Grimes.Fl s 559b50d902SRodney W. Grimes.Ar string1 568fe908efSRuslan Ermilov.Nm 57dfac4f36STim J. Robbins.Op Fl Ccu 589b50d902SRodney W. Grimes.Fl ds 599b50d902SRodney W. Grimes.Ar string1 string2 609b50d902SRodney W. Grimes.Sh DESCRIPTION 619b50d902SRodney W. GrimesThe 62af647767SPhilippe Charnier.Nm 639b50d902SRodney W. Grimesutility copies the standard input to the standard output with substitution 649b50d902SRodney W. Grimesor deletion of selected characters. 659b50d902SRodney W. Grimes.Pp 669b50d902SRodney W. GrimesThe following options are available: 679b50d902SRodney W. Grimes.Bl -tag -width Ds 68dfac4f36STim J. Robbins.It Fl C 69dfac4f36STim J. RobbinsComplement the set of characters in 709b50d902SRodney W. Grimes.Ar string1 , 71dfac4f36STim J. Robbinsthat is 7206e482e6SRuslan Ermilov.Dq Fl C Li ab 73dfac4f36STim J. Robbinsincludes every character except for 7406e482e6SRuslan Ermilov.Ql a 75dfac4f36STim J. Robbinsand 7606e482e6SRuslan Ermilov.Ql b . 77dfac4f36STim J. Robbins.It Fl c 78dfac4f36STim J. RobbinsSame as 79dfac4f36STim J. Robbins.Fl C 80e263a4b4STim J. Robbinsbut complement the set of values in 81dfac4f36STim J. Robbins.Ar string1 . 829b50d902SRodney W. Grimes.It Fl d 836eb0710eSTim J. RobbinsDelete characters in 846eb0710eSTim J. Robbins.Ar string1 856eb0710eSTim J. Robbinsfrom the input. 869b50d902SRodney W. Grimes.It Fl s 876eb0710eSTim J. RobbinsSqueeze multiple occurrences of the characters listed in the last 889b50d902SRodney W. Grimesoperand (either 899b50d902SRodney W. Grimes.Ar string1 909b50d902SRodney W. Grimesor 919b50d902SRodney W. Grimes.Ar string2 ) 929b50d902SRodney W. Grimesin the input into a single instance of the character. 939b50d902SRodney W. GrimesThis occurs after all deletion and translation is completed. 9469bd8767SWolfgang Helbig.It Fl u 956eb0710eSTim J. RobbinsGuarantee that any output is unbuffered. 969b50d902SRodney W. Grimes.El 979b50d902SRodney W. Grimes.Pp 989b50d902SRodney W. GrimesIn the first synopsis form, the characters in 999b50d902SRodney W. Grimes.Ar string1 1009b50d902SRodney W. Grimesare translated into the characters in 1019b50d902SRodney W. Grimes.Ar string2 1029b50d902SRodney W. Grimeswhere the first character in 1039b50d902SRodney W. Grimes.Ar string1 1049b50d902SRodney W. Grimesis translated into the first character in 1059b50d902SRodney W. Grimes.Ar string2 1069b50d902SRodney W. Grimesand so on. 1079b50d902SRodney W. GrimesIf 1089b50d902SRodney W. Grimes.Ar string1 1099b50d902SRodney W. Grimesis longer than 1109b50d902SRodney W. Grimes.Ar string2 , 1119b50d902SRodney W. Grimesthe last character found in 1129b50d902SRodney W. Grimes.Ar string2 1139b50d902SRodney W. Grimesis duplicated until 1149b50d902SRodney W. Grimes.Ar string1 1159b50d902SRodney W. Grimesis exhausted. 1169b50d902SRodney W. Grimes.Pp 1179b50d902SRodney W. GrimesIn the second synopsis form, the characters in 1189b50d902SRodney W. Grimes.Ar string1 1199b50d902SRodney W. Grimesare deleted from the input. 1209b50d902SRodney W. Grimes.Pp 1219b50d902SRodney W. GrimesIn the third synopsis form, the characters in 1229b50d902SRodney W. Grimes.Ar string1 1239b50d902SRodney W. Grimesare compressed as described for the 1249b50d902SRodney W. Grimes.Fl s 1259b50d902SRodney W. Grimesoption. 1269b50d902SRodney W. Grimes.Pp 1279b50d902SRodney W. GrimesIn the fourth synopsis form, the characters in 1289b50d902SRodney W. Grimes.Ar string1 1299b50d902SRodney W. Grimesare deleted from the input, and the characters in 1309b50d902SRodney W. Grimes.Ar string2 1319b50d902SRodney W. Grimesare compressed as described for the 1329b50d902SRodney W. Grimes.Fl s 1339b50d902SRodney W. Grimesoption. 1349b50d902SRodney W. Grimes.Pp 1359b50d902SRodney W. GrimesThe following conventions can be used in 1369b50d902SRodney W. Grimes.Ar string1 1379b50d902SRodney W. Grimesand 1389b50d902SRodney W. Grimes.Ar string2 1399b50d902SRodney W. Grimesto specify sets of characters: 1409b50d902SRodney W. Grimes.Bl -tag -width [:equiv:] 1419b50d902SRodney W. Grimes.It character 1429b50d902SRodney W. GrimesAny character not described by one of the following conventions 1439b50d902SRodney W. Grimesrepresents itself. 1449b50d902SRodney W. Grimes.It \eoctal 1459b50d902SRodney W. GrimesA backslash followed by 1, 2 or 3 octal digits represents a character 1469b50d902SRodney W. Grimeswith that encoded value. 1479b50d902SRodney W. GrimesTo follow an octal sequence with a digit as a character, left zero-pad 1489b50d902SRodney W. Grimesthe octal sequence to the full 3 octal digits. 1499b50d902SRodney W. Grimes.It \echaracter 1509b50d902SRodney W. GrimesA backslash followed by certain special characters maps to special 1519b50d902SRodney W. Grimesvalues. 152726b61abSRuslan Ermilov.Pp 1539597e1c2SRuslan Ermilov.Bl -column "\ea" 1549b88faecSRuslan Ermilov.It "\ea <alert character> 1559b88faecSRuslan Ermilov.It "\eb <backspace> 1569b88faecSRuslan Ermilov.It "\ef <form-feed> 1579b88faecSRuslan Ermilov.It "\en <newline> 1589b88faecSRuslan Ermilov.It "\er <carriage return> 1599b88faecSRuslan Ermilov.It "\et <tab> 1609b88faecSRuslan Ermilov.It "\ev <vertical tab> 1619b50d902SRodney W. Grimes.El 162726b61abSRuslan Ermilov.Pp 1639b50d902SRodney W. GrimesA backslash followed by any other character maps to that character. 1649b50d902SRodney W. Grimes.It c-c 16521f53e91SAndrey A. ChernovFor non-octal range endpoints 16621f53e91SAndrey A. Chernovrepresents the range of characters between the range endpoints, inclusive, 167a508a04dSAndrey A. Chernovin ascending order, 168a508a04dSAndrey A. Chernovas defined by the collation sequence. 16921f53e91SAndrey A. ChernovIf either or both of the range endpoints are octal sequences, it 17021f53e91SAndrey A. Chernovrepresents the range of specific coded values between the 17121f53e91SAndrey A. Chernovrange endpoints, inclusive. 1729b50d902SRodney W. Grimes.It [:class:] 1739b50d902SRodney W. GrimesRepresents all characters belonging to the defined character class. 1749b50d902SRodney W. GrimesClass names are: 175726b61abSRuslan Ermilov.Pp 1769597e1c2SRuslan Ermilov.Bl -column "xdigit" 1779b88faecSRuslan Ermilov.It "alnum <alphanumeric characters> 1789b88faecSRuslan Ermilov.It "alpha <alphabetic characters> 1799b88faecSRuslan Ermilov.It "cntrl <control characters> 1809b88faecSRuslan Ermilov.It "digit <numeric characters> 1819b88faecSRuslan Ermilov.It "graph <graphic characters> 1829b88faecSRuslan Ermilov.It "lower <lower-case alphabetic characters> 1839b88faecSRuslan Ermilov.It "print <printable characters> 1849b88faecSRuslan Ermilov.It "punct <punctuation characters> 1859b88faecSRuslan Ermilov.It "space <space characters> 1869b88faecSRuslan Ermilov.It "upper <upper-case characters> 1879b88faecSRuslan Ermilov.It "xdigit <hexadecimal characters> 1889b50d902SRodney W. Grimes.El 1899b50d902SRodney W. Grimes.Pp 1909b88faecSRuslan Ermilov.\" All classes may be used in 1919b88faecSRuslan Ermilov.\" .Ar string1 , 1929b88faecSRuslan Ermilov.\" and in 1939b88faecSRuslan Ermilov.\" .Ar string2 1949b88faecSRuslan Ermilov.\" when both the 1959b88faecSRuslan Ermilov.\" .Fl d 1969b88faecSRuslan Ermilov.\" and 1979b88faecSRuslan Ermilov.\" .Fl s 1989b88faecSRuslan Ermilov.\" options are specified. 1999b88faecSRuslan Ermilov.\" Otherwise, only the classes ``upper'' and ``lower'' may be used in 2009b88faecSRuslan Ermilov.\" .Ar string2 2019b88faecSRuslan Ermilov.\" and then only when the corresponding class (``upper'' for ``lower'' 2029b88faecSRuslan Ermilov.\" and vice-versa) is specified in the same relative position in 2039b88faecSRuslan Ermilov.\" .Ar string1 . 2049b88faecSRuslan Ermilov.\" .Pp 205bc44c44aSAndrey A. ChernovWhen ``[:lower:]'' appears in 206bc44c44aSAndrey A. Chernov.Ar string1 207bc44c44aSAndrey A. Chernovand ``[:upper:]'' appears in the same relative position in 208bc44c44aSAndrey A. Chernov.Ar string2 , 2098ad968eeSAndrey A. Chernovit represents the characters pairs from the 210bc44c44aSAndrey A. Chernov.Dv toupper 211bc44c44aSAndrey A. Chernovmapping in the 212bc44c44aSAndrey A. Chernov.Ev LC_CTYPE 213bc44c44aSAndrey A. Chernovcategory of the current locale. 214bc44c44aSAndrey A. ChernovWhen ``[:upper:]'' appears in 215bc44c44aSAndrey A. Chernov.Ar string1 216bc44c44aSAndrey A. Chernovand ``[:lower:]'' appears in the same relative position in 217bc44c44aSAndrey A. Chernov.Ar string2 , 2188ad968eeSAndrey A. Chernovit represents the characters pairs from the 219bc44c44aSAndrey A. Chernov.Dv tolower 220bc44c44aSAndrey A. Chernovmapping in the 221bc44c44aSAndrey A. Chernov.Ev LC_CTYPE 222bc44c44aSAndrey A. Chernovcategory of the current locale. 223bc44c44aSAndrey A. Chernov.Pp 2248ad968eeSAndrey A. ChernovWith the exception of case conversion, 2258ad968eeSAndrey A. Chernovcharacters in the classes are in unspecified order. 2269b50d902SRodney W. Grimes.Pp 227b9a86ec9SPhilippe CharnierFor specific information as to which 228b9a86ec9SPhilippe Charnier.Tn ASCII 229b9a86ec9SPhilippe Charniercharacters are included 2309b50d902SRodney W. Grimesin these classes, see 2319b50d902SRodney W. Grimes.Xr ctype 3 2329b50d902SRodney W. Grimesand related manual pages. 2339b50d902SRodney W. Grimes.It [=equiv=] 23485f6c317STim J. RobbinsRepresents all characters belonging to the same equivalence class as 23585f6c317STim J. Robbins.Ar equiv , 23685f6c317STim J. Robbinsordered by their encoded values. 2379b50d902SRodney W. Grimes.It [#*n] 2389b50d902SRodney W. GrimesRepresents 2399b50d902SRodney W. Grimes.Ar n 2409b50d902SRodney W. Grimesrepeated occurrences of the character represented by 2419b50d902SRodney W. Grimes.Ar # . 2429b50d902SRodney W. GrimesThis 2439b50d902SRodney W. Grimesexpression is only valid when it occurs in 2449b50d902SRodney W. Grimes.Ar string2 . 2459b50d902SRodney W. GrimesIf 2469b50d902SRodney W. Grimes.Ar n 2479b50d902SRodney W. Grimesis omitted or is zero, it is be interpreted as large enough to extend 2489b50d902SRodney W. Grimes.Ar string2 2499b50d902SRodney W. Grimessequence to the length of 2509b50d902SRodney W. Grimes.Ar string1 . 2519b50d902SRodney W. GrimesIf 2529b50d902SRodney W. Grimes.Ar n 2539b50d902SRodney W. Grimeshas a leading zero, it is interpreted as an octal value, otherwise, 2549b50d902SRodney W. Grimesit's interpreted as a decimal value. 2559b50d902SRodney W. Grimes.El 25685f6c317STim J. Robbins.Sh ENVIRONMENT 25785f6c317STim J. RobbinsThe 25806e482e6SRuslan Ermilov.Ev LANG , LC_ALL , LC_CTYPE 25985f6c317STim J. Robbinsand 26085f6c317STim J. Robbins.Ev LC_COLLATE 26185f6c317STim J. Robbinsenvironment variables affect the execution of 26285f6c317STim J. Robbins.Nm 26385f6c317STim J. Robbinsas described in 26485f6c317STim J. Robbins.Xr environ 7 . 2659b50d902SRodney W. Grimes.Sh EXAMPLES 2669b50d902SRodney W. GrimesThe following examples are shown as given to the shell: 267726b61abSRuslan Ermilov.Pp 2689b50d902SRodney W. GrimesCreate a list of the words in file1, one per line, where a word is taken to 2699b50d902SRodney W. Grimesbe a maximal string of letters. 270726b61abSRuslan Ermilov.Pp 2719b50d902SRodney W. Grimes.D1 Li "tr -cs \*q[:alpha:]\*q \*q\en\*q < file1" 272726b61abSRuslan Ermilov.Pp 2739b50d902SRodney W. GrimesTranslate the contents of file1 to upper-case. 274726b61abSRuslan Ermilov.Pp 2759b50d902SRodney W. Grimes.D1 Li "tr \*q[:lower:]\*q \*q[:upper:]\*q < file1" 276726b61abSRuslan Ermilov.Pp 2779b50d902SRodney W. GrimesStrip out non-printable characters from file1. 278726b61abSRuslan Ermilov.Pp 2799b50d902SRodney W. Grimes.D1 Li "tr -cd \*q[:print:]\*q < file1" 28085f6c317STim J. Robbins.Pp 28185f6c317STim J. RobbinsRemove diacritical marks from all accented variants of the letter 28206e482e6SRuslan Ermilov.Ql e : 28385f6c317STim J. Robbins.Pp 28485f6c317STim J. Robbins.Dl "tr \*q[=e=]\*q \*qe\*q" 2856eb0710eSTim J. Robbins.Sh DIAGNOSTICS 2866eb0710eSTim J. Robbins.Ex -std 2879b50d902SRodney W. Grimes.Sh COMPATIBILITY 2889b50d902SRodney W. GrimesSystem V has historically implemented character ranges using the syntax 289753d686dSRuslan Ermilov``[c-c]'' instead of the ``c-c'' used by historic 290753d686dSRuslan Ermilov.Bx 291753d686dSRuslan Ermilovimplementations and 2929b50d902SRodney W. Grimesstandardized by POSIX. 2939b50d902SRodney W. GrimesSystem V shell scripts should work under this implementation as long as 2946a3e8b0aSRuslan Ermilovthe range is intended to map in another range, i.e., the command 2959b50d902SRodney W. Grimes``tr [a-z] [A-Z]'' will work as it will map the ``['' character in 2969b50d902SRodney W. Grimes.Ar string1 2979b50d902SRodney W. Grimesto the ``['' character in 2989b50d902SRodney W. Grimes.Ar string2 . 2999b50d902SRodney W. GrimesHowever, if the shell script is deleting or squeezing characters as in 3009b50d902SRodney W. Grimesthe command ``tr -d [a-z]'', the characters ``['' and ``]'' will be 3019b50d902SRodney W. Grimesincluded in the deletion or compression list which would not have happened 302d64ada50SJens Schweikhardtunder a historic System V implementation. 3039b50d902SRodney W. GrimesAdditionally, any scripts that depended on the sequence ``a-z'' to 3049b50d902SRodney W. Grimesrepresent the three characters ``a'', ``-'' and ``z'' will have to be 3059b50d902SRodney W. Grimesrewritten as ``a\e-z''. 3069b50d902SRodney W. Grimes.Pp 3079b50d902SRodney W. GrimesThe 308af647767SPhilippe Charnier.Nm 3099b50d902SRodney W. Grimesutility has historically not permitted the manipulation of NUL bytes in 3109b50d902SRodney W. Grimesits input and, additionally, stripped NUL's from its input stream. 3119b50d902SRodney W. GrimesThis implementation has removed this behavior as a bug. 3129b50d902SRodney W. Grimes.Pp 3139b50d902SRodney W. GrimesThe 314af647767SPhilippe Charnier.Nm 3159b50d902SRodney W. Grimesutility has historically been extremely forgiving of syntax errors, 3169b50d902SRodney W. Grimesfor example, the 3179b50d902SRodney W. Grimes.Fl c 3189b50d902SRodney W. Grimesand 3199b50d902SRodney W. Grimes.Fl s 3209b50d902SRodney W. Grimesoptions were ignored unless two strings were specified. 3219b50d902SRodney W. GrimesThis implementation will not permit illegal syntax. 3229b50d902SRodney W. Grimes.Sh STANDARDS 3239b50d902SRodney W. GrimesThe 324af647767SPhilippe Charnier.Nm 325dfac4f36STim J. Robbinsutility conforms to 326dfac4f36STim J. Robbins.St -p1003.1-2001 . 327dfac4f36STim J. Robbins.Pp 3289b50d902SRodney W. GrimesIt should be noted that the feature wherein the last character of 3299b50d902SRodney W. Grimes.Ar string2 3309b50d902SRodney W. Grimesis duplicated if 3319b50d902SRodney W. Grimes.Ar string2 3329b50d902SRodney W. Grimeshas less characters than 3339b50d902SRodney W. Grimes.Ar string1 3349b50d902SRodney W. Grimesis permitted by POSIX but is not required. 3359b50d902SRodney W. GrimesShell scripts attempting to be portable to other POSIX systems should use 3369b50d902SRodney W. Grimesthe ``[#*]'' convention instead of relying on this behavior. 33769bd8767SWolfgang HelbigThe 33869bd8767SWolfgang Helbig.Fl u 33969bd8767SWolfgang Helbigoption is an extension to the 340dfac4f36STim J. Robbins.St -p1003.1-2001 34169bd8767SWolfgang Helbigstandard. 342