xref: /freebsd/usr.bin/tr/tr.1 (revision 69bd8767a990a230c6f8fc6758a07dfb61ca6b66)
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
369b50d902SRodney W. Grimes.\"
3769bd8767SWolfgang Helbig.Dd October 11, 1997
389b50d902SRodney W. Grimes.Dt TR 1
399b50d902SRodney W. Grimes.Os
409b50d902SRodney W. Grimes.Sh NAME
419b50d902SRodney W. Grimes.Nm tr
429b50d902SRodney W. Grimes.Nd translate characters
439b50d902SRodney W. Grimes.Sh SYNOPSIS
449b50d902SRodney W. Grimes.Nm tr
4569bd8767SWolfgang Helbig.Op Fl csu
469b50d902SRodney W. Grimes.Ar string1 string2
479b50d902SRodney W. Grimes.Nm tr
4869bd8767SWolfgang Helbig.Op Fl cu
499b50d902SRodney W. Grimes.Fl d
509b50d902SRodney W. Grimes.Ar string1
519b50d902SRodney W. Grimes.Nm tr
5269bd8767SWolfgang Helbig.Op Fl cu
539b50d902SRodney W. Grimes.Fl s
549b50d902SRodney W. Grimes.Ar string1
559b50d902SRodney W. Grimes.Nm tr
5669bd8767SWolfgang Helbig.Op Fl cu
579b50d902SRodney W. Grimes.Fl ds
589b50d902SRodney W. Grimes.Ar string1 string2
599b50d902SRodney W. Grimes.Sh DESCRIPTION
609b50d902SRodney W. GrimesThe
61af647767SPhilippe Charnier.Nm
629b50d902SRodney W. Grimesutility copies the standard input to the standard output with substitution
639b50d902SRodney W. Grimesor deletion of selected characters.
649b50d902SRodney W. Grimes.Pp
659b50d902SRodney W. GrimesThe following options are available:
669b50d902SRodney W. Grimes.Bl -tag -width Ds
679b50d902SRodney W. Grimes.It Fl c
689b50d902SRodney W. GrimesComplements the set of characters in
699b50d902SRodney W. Grimes.Ar string1 ,
709b50d902SRodney W. Grimesthat is ``-c ab'' includes every character except for ``a'' and ``b''.
719b50d902SRodney W. Grimes.It Fl d
729b50d902SRodney W. GrimesThe
739b50d902SRodney W. Grimes.Fl d
749b50d902SRodney W. Grimesoption causes characters to be deleted from the input.
759b50d902SRodney W. Grimes.It Fl s
769b50d902SRodney W. GrimesThe
779b50d902SRodney W. Grimes.Fl s
789b50d902SRodney W. Grimesoption squeezes multiple occurrences of the characters listed in the last
799b50d902SRodney W. Grimesoperand (either
809b50d902SRodney W. Grimes.Ar string1
819b50d902SRodney W. Grimesor
829b50d902SRodney W. Grimes.Ar string2 )
839b50d902SRodney W. Grimesin the input into a single instance of the character.
849b50d902SRodney W. GrimesThis occurs after all deletion and translation is completed.
8569bd8767SWolfgang Helbig.It Fl u
8669bd8767SWolfgang HelbigThe
8769bd8767SWolfgang Helbig.Fl u
8869bd8767SWolfgang Helbigoption guarantees that any output is unbuffered.
899b50d902SRodney W. Grimes.El
909b50d902SRodney W. Grimes.Pp
919b50d902SRodney W. GrimesIn the first synopsis form, the characters in
929b50d902SRodney W. Grimes.Ar string1
939b50d902SRodney W. Grimesare translated into the characters in
949b50d902SRodney W. Grimes.Ar string2
959b50d902SRodney W. Grimeswhere the first character in
969b50d902SRodney W. Grimes.Ar string1
979b50d902SRodney W. Grimesis translated into the first character in
989b50d902SRodney W. Grimes.Ar string2
999b50d902SRodney W. Grimesand so on.
1009b50d902SRodney W. GrimesIf
1019b50d902SRodney W. Grimes.Ar string1
1029b50d902SRodney W. Grimesis longer than
1039b50d902SRodney W. Grimes.Ar string2 ,
1049b50d902SRodney W. Grimesthe last character found in
1059b50d902SRodney W. Grimes.Ar string2
1069b50d902SRodney W. Grimesis duplicated until
1079b50d902SRodney W. Grimes.Ar string1
1089b50d902SRodney W. Grimesis exhausted.
1099b50d902SRodney W. Grimes.Pp
1109b50d902SRodney W. GrimesIn the second synopsis form, the characters in
1119b50d902SRodney W. Grimes.Ar string1
1129b50d902SRodney W. Grimesare deleted from the input.
1139b50d902SRodney W. Grimes.Pp
1149b50d902SRodney W. GrimesIn the third synopsis form, the characters in
1159b50d902SRodney W. Grimes.Ar string1
1169b50d902SRodney W. Grimesare compressed as described for the
1179b50d902SRodney W. Grimes.Fl s
1189b50d902SRodney W. Grimesoption.
1199b50d902SRodney W. Grimes.Pp
1209b50d902SRodney W. GrimesIn the fourth synopsis form, the characters in
1219b50d902SRodney W. Grimes.Ar string1
1229b50d902SRodney W. Grimesare deleted from the input, and the characters in
1239b50d902SRodney W. Grimes.Ar string2
1249b50d902SRodney W. Grimesare compressed as described for the
1259b50d902SRodney W. Grimes.Fl s
1269b50d902SRodney W. Grimesoption.
1279b50d902SRodney W. Grimes.Pp
1289b50d902SRodney W. GrimesThe following conventions can be used in
1299b50d902SRodney W. Grimes.Ar string1
1309b50d902SRodney W. Grimesand
1319b50d902SRodney W. Grimes.Ar string2
1329b50d902SRodney W. Grimesto specify sets of characters:
1339b50d902SRodney W. Grimes.Bl -tag -width [:equiv:]
1349b50d902SRodney W. Grimes.It character
1359b50d902SRodney W. GrimesAny character not described by one of the following conventions
1369b50d902SRodney W. Grimesrepresents itself.
1379b50d902SRodney W. Grimes.It \eoctal
1389b50d902SRodney W. GrimesA backslash followed by 1, 2 or 3 octal digits represents a character
1399b50d902SRodney W. Grimeswith that encoded value.
1409b50d902SRodney W. GrimesTo follow an octal sequence with a digit as a character, left zero-pad
1419b50d902SRodney W. Grimesthe octal sequence to the full 3 octal digits.
1429b50d902SRodney W. Grimes.It \echaracter
1439b50d902SRodney W. GrimesA backslash followed by certain special characters maps to special
1449b50d902SRodney W. Grimesvalues.
1459b50d902SRodney W. Grimes.sp
1469b50d902SRodney W. Grimes.Bl -column
1479b50d902SRodney W. Grimes.It \ea	<alert character>
1489b50d902SRodney W. Grimes.It \eb	<backspace>
1499b50d902SRodney W. Grimes.It \ef	<form-feed>
1509b50d902SRodney W. Grimes.It \en	<newline>
1519b50d902SRodney W. Grimes.It \er	<carriage return>
1529b50d902SRodney W. Grimes.It \et	<tab>
1539b50d902SRodney W. Grimes.It \ev	<vertical tab>
1549b50d902SRodney W. Grimes.El
1559b50d902SRodney W. Grimes.sp
1569b50d902SRodney W. GrimesA backslash followed by any other character maps to that character.
1579b50d902SRodney W. Grimes.It c-c
1589b50d902SRodney W. GrimesRepresents the range of characters between the range endpoints, inclusively.
1599b50d902SRodney W. Grimes.It [:class:]
1609b50d902SRodney W. GrimesRepresents all characters belonging to the defined character class.
1619b50d902SRodney W. GrimesClass names are:
1629b50d902SRodney W. Grimes.sp
1639b50d902SRodney W. Grimes.Bl -column
1649b50d902SRodney W. Grimes.It alnum	<alphanumeric characters>
1659b50d902SRodney W. Grimes.It alpha	<alphabetic characters>
1669b50d902SRodney W. Grimes.It cntrl	<control characters>
1679b50d902SRodney W. Grimes.It digit	<numeric characters>
1689b50d902SRodney W. Grimes.It graph	<graphic characters>
1699b50d902SRodney W. Grimes.It lower	<lower-case alphabetic characters>
1709b50d902SRodney W. Grimes.It print	<printable characters>
1719b50d902SRodney W. Grimes.It punct	<punctuation characters>
1729b50d902SRodney W. Grimes.It space	<space characters>
1739b50d902SRodney W. Grimes.It upper	<upper-case characters>
1749b50d902SRodney W. Grimes.It xdigit	<hexadecimal characters>
1759b50d902SRodney W. Grimes.El
1769b50d902SRodney W. Grimes.Pp
1779b50d902SRodney W. Grimes\." All classes may be used in
1789b50d902SRodney W. Grimes\." .Ar string1 ,
1799b50d902SRodney W. Grimes\." and in
1809b50d902SRodney W. Grimes\." .Ar string2
1819b50d902SRodney W. Grimes\." when both the
1829b50d902SRodney W. Grimes\." .Fl d
1839b50d902SRodney W. Grimes\." and
1849b50d902SRodney W. Grimes\." .Fl s
1859b50d902SRodney W. Grimes\." options are specified.
1869b50d902SRodney W. Grimes\." Otherwise, only the classes ``upper'' and ``lower'' may be used in
1879b50d902SRodney W. Grimes\." .Ar string2
1889b50d902SRodney W. Grimes\." and then only when the corresponding class (``upper'' for ``lower''
1899b50d902SRodney W. Grimes\." and vice-versa) is specified in the same relative position in
1909b50d902SRodney W. Grimes\." .Ar string1 .
1919b50d902SRodney W. Grimes\." .Pp
1929b50d902SRodney W. GrimesWith the exception of the ``upper'' and ``lower'' classes, characters
1939b50d902SRodney W. Grimesin the classes are in unspecified order.
1949b50d902SRodney W. GrimesIn the ``upper'' and ``lower'' classes, characters are entered in
1959b50d902SRodney W. Grimesascending order.
1969b50d902SRodney W. Grimes.Pp
1979b50d902SRodney W. GrimesFor specific information as to which ASCII characters are included
1989b50d902SRodney W. Grimesin these classes, see
1999b50d902SRodney W. Grimes.Xr ctype 3
2009b50d902SRodney W. Grimesand related manual pages.
2019b50d902SRodney W. Grimes.It [=equiv=]
2029b50d902SRodney W. GrimesRepresents all characters or collating (sorting) elements belonging to
2039b50d902SRodney W. Grimesthe same equivalence class as
2049b50d902SRodney W. Grimes.Ar equiv .
2059b50d902SRodney W. GrimesIf
2069b50d902SRodney W. Grimesthere is a secondary ordering within the equivalence class, the characters
2079b50d902SRodney W. Grimesare ordered in ascending sequence.
2089b50d902SRodney W. GrimesOtherwise, they are ordered after their encoded values.
2099b50d902SRodney W. GrimesAn example of an equivalence class might be ``c'' and ``ch'' in Spanish;
2109b50d902SRodney W. GrimesEnglish has no equivalence classes.
2119b50d902SRodney W. Grimes.It [#*n]
2129b50d902SRodney W. GrimesRepresents
2139b50d902SRodney W. Grimes.Ar n
2149b50d902SRodney W. Grimesrepeated occurrences of the character represented by
2159b50d902SRodney W. Grimes.Ar # .
2169b50d902SRodney W. GrimesThis
2179b50d902SRodney W. Grimesexpression is only valid when it occurs in
2189b50d902SRodney W. Grimes.Ar string2 .
2199b50d902SRodney W. GrimesIf
2209b50d902SRodney W. Grimes.Ar n
2219b50d902SRodney W. Grimesis omitted or is zero, it is be interpreted as large enough to extend
2229b50d902SRodney W. Grimes.Ar string2
2239b50d902SRodney W. Grimessequence to the length of
2249b50d902SRodney W. Grimes.Ar string1 .
2259b50d902SRodney W. GrimesIf
2269b50d902SRodney W. Grimes.Ar n
2279b50d902SRodney W. Grimeshas a leading zero, it is interpreted as an octal value, otherwise,
2289b50d902SRodney W. Grimesit's interpreted as a decimal value.
2299b50d902SRodney W. Grimes.El
2309b50d902SRodney W. Grimes.Pp
2319b50d902SRodney W. GrimesThe
232af647767SPhilippe Charnier.Nm
2339b50d902SRodney W. Grimesutility exits 0 on success, and >0 if an error occurs.
2349b50d902SRodney W. Grimes.Sh EXAMPLES
2359b50d902SRodney W. GrimesThe following examples are shown as given to the shell:
2369b50d902SRodney W. Grimes.sp
2379b50d902SRodney W. GrimesCreate a list of the words in file1, one per line, where a word is taken to
2389b50d902SRodney W. Grimesbe a maximal string of letters.
2399b50d902SRodney W. Grimes.sp
2409b50d902SRodney W. Grimes.D1 Li "tr -cs \*q[:alpha:]\*q \*q\en\*q < file1"
2419b50d902SRodney W. Grimes.sp
2429b50d902SRodney W. GrimesTranslate the contents of file1 to upper-case.
2439b50d902SRodney W. Grimes.sp
2449b50d902SRodney W. Grimes.D1 Li "tr \*q[:lower:]\*q \*q[:upper:]\*q < file1"
2459b50d902SRodney W. Grimes.sp
2469b50d902SRodney W. GrimesStrip out non-printable characters from file1.
2479b50d902SRodney W. Grimes.sp
2489b50d902SRodney W. Grimes.D1 Li "tr -cd \*q[:print:]\*q < file1"
2499b50d902SRodney W. Grimes.Sh COMPATIBILITY
2509b50d902SRodney W. GrimesSystem V has historically implemented character ranges using the syntax
2519b50d902SRodney W. Grimes``[c-c]'' instead of the ``c-c'' used by historic BSD implementations and
2529b50d902SRodney W. Grimesstandardized by POSIX.
2539b50d902SRodney W. GrimesSystem V shell scripts should work under this implementation as long as
2549b50d902SRodney W. Grimesthe range is intended to map in another range, i.e. the command
2559b50d902SRodney W. Grimes``tr [a-z] [A-Z]'' will work as it will map the ``['' character in
2569b50d902SRodney W. Grimes.Ar string1
2579b50d902SRodney W. Grimesto the ``['' character in
2589b50d902SRodney W. Grimes.Ar string2.
2599b50d902SRodney W. GrimesHowever, if the shell script is deleting or squeezing characters as in
2609b50d902SRodney W. Grimesthe command ``tr -d [a-z]'', the characters ``['' and ``]'' will be
2619b50d902SRodney W. Grimesincluded in the deletion or compression list which would not have happened
2629b50d902SRodney W. Grimesunder an historic System V implementation.
2639b50d902SRodney W. GrimesAdditionally, any scripts that depended on the sequence ``a-z'' to
2649b50d902SRodney W. Grimesrepresent the three characters ``a'', ``-'' and ``z'' will have to be
2659b50d902SRodney W. Grimesrewritten as ``a\e-z''.
2669b50d902SRodney W. Grimes.Pp
2679b50d902SRodney W. GrimesThe
268af647767SPhilippe Charnier.Nm
2699b50d902SRodney W. Grimesutility has historically not permitted the manipulation of NUL bytes in
2709b50d902SRodney W. Grimesits input and, additionally, stripped NUL's from its input stream.
2719b50d902SRodney W. GrimesThis implementation has removed this behavior as a bug.
2729b50d902SRodney W. Grimes.Pp
2739b50d902SRodney W. GrimesThe
274af647767SPhilippe Charnier.Nm
2759b50d902SRodney W. Grimesutility has historically been extremely forgiving of syntax errors,
2769b50d902SRodney W. Grimesfor example, the
2779b50d902SRodney W. Grimes.Fl c
2789b50d902SRodney W. Grimesand
2799b50d902SRodney W. Grimes.Fl s
2809b50d902SRodney W. Grimesoptions were ignored unless two strings were specified.
2819b50d902SRodney W. GrimesThis implementation will not permit illegal syntax.
2829b50d902SRodney W. Grimes.Sh STANDARDS
2839b50d902SRodney W. GrimesThe
284af647767SPhilippe Charnier.Nm
2859b50d902SRodney W. Grimesutility is expected to be
2869b50d902SRodney W. Grimes.St -p1003.2
2879b50d902SRodney W. Grimescompatible.
2889b50d902SRodney W. GrimesIt should be noted that the feature wherein the last character of
2899b50d902SRodney W. Grimes.Ar string2
2909b50d902SRodney W. Grimesis duplicated if
2919b50d902SRodney W. Grimes.Ar string2
2929b50d902SRodney W. Grimeshas less characters than
2939b50d902SRodney W. Grimes.Ar string1
2949b50d902SRodney W. Grimesis permitted by POSIX but is not required.
2959b50d902SRodney W. GrimesShell scripts attempting to be portable to other POSIX systems should use
2969b50d902SRodney W. Grimesthe ``[#*]'' convention instead of relying on this behavior.
29769bd8767SWolfgang HelbigThe
29869bd8767SWolfgang Helbig.Fl u
29969bd8767SWolfgang Helbigoption is an extension to the
30069bd8767SWolfgang Helbig.St -p1003.2
30169bd8767SWolfgang Helbigstandard.
302