xref: /freebsd/usr.bin/tr/tr.1 (revision dfac4f3695ed938aee62fbb9a9abfb842e36fac2)
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.\"
3869bd8767SWolfgang Helbig.Dd October 11, 1997
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
72dfac4f36STim J. Robbins.Dq "-C ab"
73dfac4f36STim J. Robbinsincludes every character except for
74dfac4f36STim J. Robbins.Dq a
75dfac4f36STim J. Robbinsand
76dfac4f36STim J. Robbins.Dq b .
77dfac4f36STim J. Robbins.It Fl c
78dfac4f36STim J. RobbinsSame as
79dfac4f36STim J. Robbins.Fl C
80dfac4f36STim J. Robbinsbut complement the set of byte values in
81dfac4f36STim J. Robbins.Ar string1 .
829b50d902SRodney W. Grimes.It Fl d
839b50d902SRodney W. GrimesThe
849b50d902SRodney W. Grimes.Fl d
859b50d902SRodney W. Grimesoption causes characters to be deleted from the input.
869b50d902SRodney W. Grimes.It Fl s
879b50d902SRodney W. GrimesThe
889b50d902SRodney W. Grimes.Fl s
899b50d902SRodney W. Grimesoption squeezes multiple occurrences of the characters listed in the last
909b50d902SRodney W. Grimesoperand (either
919b50d902SRodney W. Grimes.Ar string1
929b50d902SRodney W. Grimesor
939b50d902SRodney W. Grimes.Ar string2 )
949b50d902SRodney W. Grimesin the input into a single instance of the character.
959b50d902SRodney W. GrimesThis occurs after all deletion and translation is completed.
9669bd8767SWolfgang Helbig.It Fl u
9769bd8767SWolfgang HelbigThe
9869bd8767SWolfgang Helbig.Fl u
9969bd8767SWolfgang Helbigoption guarantees that any output is unbuffered.
1009b50d902SRodney W. Grimes.El
1019b50d902SRodney W. Grimes.Pp
1029b50d902SRodney W. GrimesIn the first synopsis form, the characters in
1039b50d902SRodney W. Grimes.Ar string1
1049b50d902SRodney W. Grimesare translated into the characters in
1059b50d902SRodney W. Grimes.Ar string2
1069b50d902SRodney W. Grimeswhere the first character in
1079b50d902SRodney W. Grimes.Ar string1
1089b50d902SRodney W. Grimesis translated into the first character in
1099b50d902SRodney W. Grimes.Ar string2
1109b50d902SRodney W. Grimesand so on.
1119b50d902SRodney W. GrimesIf
1129b50d902SRodney W. Grimes.Ar string1
1139b50d902SRodney W. Grimesis longer than
1149b50d902SRodney W. Grimes.Ar string2 ,
1159b50d902SRodney W. Grimesthe last character found in
1169b50d902SRodney W. Grimes.Ar string2
1179b50d902SRodney W. Grimesis duplicated until
1189b50d902SRodney W. Grimes.Ar string1
1199b50d902SRodney W. Grimesis exhausted.
1209b50d902SRodney W. Grimes.Pp
1219b50d902SRodney W. GrimesIn the second synopsis form, the characters in
1229b50d902SRodney W. Grimes.Ar string1
1239b50d902SRodney W. Grimesare deleted from the input.
1249b50d902SRodney W. Grimes.Pp
1259b50d902SRodney W. GrimesIn the third synopsis form, the characters in
1269b50d902SRodney W. Grimes.Ar string1
1279b50d902SRodney W. Grimesare compressed as described for the
1289b50d902SRodney W. Grimes.Fl s
1299b50d902SRodney W. Grimesoption.
1309b50d902SRodney W. Grimes.Pp
1319b50d902SRodney W. GrimesIn the fourth synopsis form, the characters in
1329b50d902SRodney W. Grimes.Ar string1
1339b50d902SRodney W. Grimesare deleted from the input, and the characters in
1349b50d902SRodney W. Grimes.Ar string2
1359b50d902SRodney W. Grimesare compressed as described for the
1369b50d902SRodney W. Grimes.Fl s
1379b50d902SRodney W. Grimesoption.
1389b50d902SRodney W. Grimes.Pp
1399b50d902SRodney W. GrimesThe following conventions can be used in
1409b50d902SRodney W. Grimes.Ar string1
1419b50d902SRodney W. Grimesand
1429b50d902SRodney W. Grimes.Ar string2
1439b50d902SRodney W. Grimesto specify sets of characters:
1449b50d902SRodney W. Grimes.Bl -tag -width [:equiv:]
1459b50d902SRodney W. Grimes.It character
1469b50d902SRodney W. GrimesAny character not described by one of the following conventions
1479b50d902SRodney W. Grimesrepresents itself.
1489b50d902SRodney W. Grimes.It \eoctal
1499b50d902SRodney W. GrimesA backslash followed by 1, 2 or 3 octal digits represents a character
1509b50d902SRodney W. Grimeswith that encoded value.
1519b50d902SRodney W. GrimesTo follow an octal sequence with a digit as a character, left zero-pad
1529b50d902SRodney W. Grimesthe octal sequence to the full 3 octal digits.
1539b50d902SRodney W. Grimes.It \echaracter
1549b50d902SRodney W. GrimesA backslash followed by certain special characters maps to special
1559b50d902SRodney W. Grimesvalues.
156726b61abSRuslan Ermilov.Pp
1579597e1c2SRuslan Ermilov.Bl -column "\ea"
1589b88faecSRuslan Ermilov.It "\ea	<alert character>
1599b88faecSRuslan Ermilov.It "\eb	<backspace>
1609b88faecSRuslan Ermilov.It "\ef	<form-feed>
1619b88faecSRuslan Ermilov.It "\en	<newline>
1629b88faecSRuslan Ermilov.It "\er	<carriage return>
1639b88faecSRuslan Ermilov.It "\et	<tab>
1649b88faecSRuslan Ermilov.It "\ev	<vertical tab>
1659b50d902SRodney W. Grimes.El
166726b61abSRuslan Ermilov.Pp
1679b50d902SRodney W. GrimesA backslash followed by any other character maps to that character.
1689b50d902SRodney W. Grimes.It c-c
1699b50d902SRodney W. GrimesRepresents the range of characters between the range endpoints, inclusively.
1709b50d902SRodney W. Grimes.It [:class:]
1719b50d902SRodney W. GrimesRepresents all characters belonging to the defined character class.
1729b50d902SRodney W. GrimesClass names are:
173726b61abSRuslan Ermilov.Pp
1749597e1c2SRuslan Ermilov.Bl -column "xdigit"
1759b88faecSRuslan Ermilov.It "alnum	<alphanumeric characters>
1769b88faecSRuslan Ermilov.It "alpha	<alphabetic characters>
1779b88faecSRuslan Ermilov.It "cntrl	<control characters>
1789b88faecSRuslan Ermilov.It "digit	<numeric characters>
1799b88faecSRuslan Ermilov.It "graph	<graphic characters>
1809b88faecSRuslan Ermilov.It "lower	<lower-case alphabetic characters>
1819b88faecSRuslan Ermilov.It "print	<printable characters>
1829b88faecSRuslan Ermilov.It "punct	<punctuation characters>
1839b88faecSRuslan Ermilov.It "space	<space characters>
1849b88faecSRuslan Ermilov.It "upper	<upper-case characters>
1859b88faecSRuslan Ermilov.It "xdigit	<hexadecimal characters>
1869b50d902SRodney W. Grimes.El
1879b50d902SRodney W. Grimes.Pp
1889b88faecSRuslan Ermilov.\" All classes may be used in
1899b88faecSRuslan Ermilov.\" .Ar string1 ,
1909b88faecSRuslan Ermilov.\" and in
1919b88faecSRuslan Ermilov.\" .Ar string2
1929b88faecSRuslan Ermilov.\" when both the
1939b88faecSRuslan Ermilov.\" .Fl d
1949b88faecSRuslan Ermilov.\" and
1959b88faecSRuslan Ermilov.\" .Fl s
1969b88faecSRuslan Ermilov.\" options are specified.
1979b88faecSRuslan Ermilov.\" Otherwise, only the classes ``upper'' and ``lower'' may be used in
1989b88faecSRuslan Ermilov.\" .Ar string2
1999b88faecSRuslan Ermilov.\" and then only when the corresponding class (``upper'' for ``lower''
2009b88faecSRuslan Ermilov.\" and vice-versa) is specified in the same relative position in
2019b88faecSRuslan Ermilov.\" .Ar string1 .
2029b88faecSRuslan Ermilov.\" .Pp
2039b50d902SRodney W. GrimesWith the exception of the ``upper'' and ``lower'' classes, characters
2049b50d902SRodney W. Grimesin the classes are in unspecified order.
2059b50d902SRodney W. GrimesIn the ``upper'' and ``lower'' classes, characters are entered in
2069b50d902SRodney W. Grimesascending order.
2079b50d902SRodney W. Grimes.Pp
2089b50d902SRodney W. GrimesFor specific information as to which ASCII characters are included
2099b50d902SRodney W. Grimesin these classes, see
2109b50d902SRodney W. Grimes.Xr ctype 3
2119b50d902SRodney W. Grimesand related manual pages.
2129b50d902SRodney W. Grimes.It [=equiv=]
21385f6c317STim J. RobbinsRepresents all characters belonging to the same equivalence class as
21485f6c317STim J. Robbins.Ar equiv ,
21585f6c317STim J. Robbinsordered by their encoded values.
2169b50d902SRodney W. Grimes.It [#*n]
2179b50d902SRodney W. GrimesRepresents
2189b50d902SRodney W. Grimes.Ar n
2199b50d902SRodney W. Grimesrepeated occurrences of the character represented by
2209b50d902SRodney W. Grimes.Ar # .
2219b50d902SRodney W. GrimesThis
2229b50d902SRodney W. Grimesexpression is only valid when it occurs in
2239b50d902SRodney W. Grimes.Ar string2 .
2249b50d902SRodney W. GrimesIf
2259b50d902SRodney W. Grimes.Ar n
2269b50d902SRodney W. Grimesis omitted or is zero, it is be interpreted as large enough to extend
2279b50d902SRodney W. Grimes.Ar string2
2289b50d902SRodney W. Grimessequence to the length of
2299b50d902SRodney W. Grimes.Ar string1 .
2309b50d902SRodney W. GrimesIf
2319b50d902SRodney W. Grimes.Ar n
2329b50d902SRodney W. Grimeshas a leading zero, it is interpreted as an octal value, otherwise,
2339b50d902SRodney W. Grimesit's interpreted as a decimal value.
2349b50d902SRodney W. Grimes.El
23585f6c317STim J. Robbins.Sh ENVIRONMENT
23685f6c317STim J. RobbinsThe
23785f6c317STim J. Robbins.Ev LANG ,
23885f6c317STim J. Robbins.Ev LC_ALL ,
23985f6c317STim J. Robbins.Ev LC_CTYPE
24085f6c317STim J. Robbinsand
24185f6c317STim J. Robbins.Ev LC_COLLATE
24285f6c317STim J. Robbinsenvironment variables affect the execution of
24385f6c317STim J. Robbins.Nm
24485f6c317STim J. Robbinsas described in
24585f6c317STim J. Robbins.Xr environ 7 .
246dbb9d8f8SPhilippe Charnier.Sh DIAGNOSTICS
247d628d776SRuslan Ermilov.Ex -std
2489b50d902SRodney W. Grimes.Sh EXAMPLES
2499b50d902SRodney W. GrimesThe following examples are shown as given to the shell:
250726b61abSRuslan Ermilov.Pp
2519b50d902SRodney W. GrimesCreate a list of the words in file1, one per line, where a word is taken to
2529b50d902SRodney W. Grimesbe a maximal string of letters.
253726b61abSRuslan Ermilov.Pp
2549b50d902SRodney W. Grimes.D1 Li "tr -cs \*q[:alpha:]\*q \*q\en\*q < file1"
255726b61abSRuslan Ermilov.Pp
2569b50d902SRodney W. GrimesTranslate the contents of file1 to upper-case.
257726b61abSRuslan Ermilov.Pp
2589b50d902SRodney W. Grimes.D1 Li "tr \*q[:lower:]\*q \*q[:upper:]\*q < file1"
259726b61abSRuslan Ermilov.Pp
2609b50d902SRodney W. GrimesStrip out non-printable characters from file1.
261726b61abSRuslan Ermilov.Pp
2629b50d902SRodney W. Grimes.D1 Li "tr -cd \*q[:print:]\*q < file1"
26385f6c317STim J. Robbins.Pp
26485f6c317STim J. RobbinsRemove diacritical marks from all accented variants of the letter
26585f6c317STim J. Robbins.Sq e :
26685f6c317STim J. Robbins.Pp
26785f6c317STim J. Robbins.Dl "tr \*q[=e=]\*q \*qe\*q"
2689b50d902SRodney W. Grimes.Sh COMPATIBILITY
2699b50d902SRodney W. GrimesSystem V has historically implemented character ranges using the syntax
270753d686dSRuslan Ermilov``[c-c]'' instead of the ``c-c'' used by historic
271753d686dSRuslan Ermilov.Bx
272753d686dSRuslan Ermilovimplementations and
2739b50d902SRodney W. Grimesstandardized by POSIX.
2749b50d902SRodney W. GrimesSystem V shell scripts should work under this implementation as long as
2759b50d902SRodney W. Grimesthe range is intended to map in another range, i.e. the command
2769b50d902SRodney W. Grimes``tr [a-z] [A-Z]'' will work as it will map the ``['' character in
2779b50d902SRodney W. Grimes.Ar string1
2789b50d902SRodney W. Grimesto the ``['' character in
2799b50d902SRodney W. Grimes.Ar string2 .
2809b50d902SRodney W. GrimesHowever, if the shell script is deleting or squeezing characters as in
2819b50d902SRodney W. Grimesthe command ``tr -d [a-z]'', the characters ``['' and ``]'' will be
2829b50d902SRodney W. Grimesincluded in the deletion or compression list which would not have happened
2839b50d902SRodney W. Grimesunder an historic System V implementation.
2849b50d902SRodney W. GrimesAdditionally, any scripts that depended on the sequence ``a-z'' to
2859b50d902SRodney W. Grimesrepresent the three characters ``a'', ``-'' and ``z'' will have to be
2869b50d902SRodney W. Grimesrewritten as ``a\e-z''.
2879b50d902SRodney W. Grimes.Pp
2889b50d902SRodney W. GrimesThe
289af647767SPhilippe Charnier.Nm
2909b50d902SRodney W. Grimesutility has historically not permitted the manipulation of NUL bytes in
2919b50d902SRodney W. Grimesits input and, additionally, stripped NUL's from its input stream.
2929b50d902SRodney W. GrimesThis implementation has removed this behavior as a bug.
2939b50d902SRodney W. Grimes.Pp
2949b50d902SRodney W. GrimesThe
295af647767SPhilippe Charnier.Nm
2969b50d902SRodney W. Grimesutility has historically been extremely forgiving of syntax errors,
2979b50d902SRodney W. Grimesfor example, the
2989b50d902SRodney W. Grimes.Fl c
2999b50d902SRodney W. Grimesand
3009b50d902SRodney W. Grimes.Fl s
3019b50d902SRodney W. Grimesoptions were ignored unless two strings were specified.
3029b50d902SRodney W. GrimesThis implementation will not permit illegal syntax.
3039b50d902SRodney W. Grimes.Sh STANDARDS
3049b50d902SRodney W. GrimesThe
305af647767SPhilippe Charnier.Nm
306dfac4f36STim J. Robbinsutility conforms to
307dfac4f36STim J. Robbins.St -p1003.1-2001 .
308dfac4f36STim J. Robbins.Pp
3099b50d902SRodney W. GrimesIt should be noted that the feature wherein the last character of
3109b50d902SRodney W. Grimes.Ar string2
3119b50d902SRodney W. Grimesis duplicated if
3129b50d902SRodney W. Grimes.Ar string2
3139b50d902SRodney W. Grimeshas less characters than
3149b50d902SRodney W. Grimes.Ar string1
3159b50d902SRodney W. Grimesis permitted by POSIX but is not required.
3169b50d902SRodney W. GrimesShell scripts attempting to be portable to other POSIX systems should use
3179b50d902SRodney W. Grimesthe ``[#*]'' convention instead of relying on this behavior.
31869bd8767SWolfgang HelbigThe
31969bd8767SWolfgang Helbig.Fl u
32069bd8767SWolfgang Helbigoption is an extension to the
321dfac4f36STim J. Robbins.St -p1003.1-2001
32269bd8767SWolfgang Helbigstandard.
323