.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "TR 1" .TH TR 1 "2001-06-06" "perl v5.20.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" tr \- translate or delete characters .SH "SYNOPSIS" .IX Header "SYNOPSIS" tr [ \-cdsUC ] [ \fI\s-1SEARCHLIST\s0\fR [ \fI\s-1REPLACEMENTLIST\s0\fR ] ] .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fItr\fR program copies the standard input to the standard output with substitution or deletion of selected characters. Input characters found in \fI\s-1SEARCHLIST\s0\fR are mapped into the corresponding characters of \&\fI\s-1REPLACEMENTLIST\s0\fR. When \fI\s-1REPLACEMENTLIST\s0\fR is short it is padded to the length of \fI\s-1SEARCHLIST\s0\fR by duplicating its last character. .PP Here are the options: .IP "c" 4 .IX Item "c" Complement the \s-1SEARCHLIST.\s0 .IP "d" 4 .IX Item "d" Delete found but unreplaced characters. .IP "s" 4 .IX Item "s" Squash duplicate replaced characters. .IP "U" 4 .IX Item "U" Translate to/from \s-1UTF\-8.\s0 .IP "C" 4 .IX Item "C" Translate to/from 8\-bit char (octet). .PP In either string, the notation \f(CW\*(C`a\-b\*(C'\fR means a range of characters from \&\f(CW\*(C`a\*(C'\fR to \f(CW\*(C`b\*(C'\fR in increasing \s-1ASCII\s0 order. Customary Perl escapes are honored, such as \f(CW\*(C`\en\*(C'\fR for newline, \f(CW\*(C`\e012\*(C'\fR for octal, and \f(CW\*(C`\ex0A\*(C'\fR for hexadecimal codes. .PP If the \fB\-c\fR flag is specified, the \s-1SEARCHLIST\s0 character set is complemented. If the \fB\-d\fR flag is specified, any characters specified by \s-1SEARCHLIST\s0 not found in \s-1REPLACEMENTLIST\s0 are deleted. (Note that this is slightly more flexible than the behavior of some tr programs, which delete anything they find in the \s-1SEARCHLIST,\s0 period.) If the \fB\-s\fR flag is specified, sequences of characters that were transliterated to the same character are squashed down to a single instance of the character. .PP If the \fB\-d\fR flag is used, the \s-1REPLACEMENTLIST\s0 is always interpreted exactly as specified. Otherwise, if the \s-1REPLACEMENTLIST\s0 is shorter than the \s-1SEARCHLIST,\s0 the final character is replicated till it is long enough. If the \s-1REPLACEMENTLIST\s0 is empty, the \s-1SEARCHLIST\s0 is replicated. This latter is useful for counting characters in a class or for squashing character sequences in a class. .PP The first \fB\-U\fR or \fB\-C\fR flag applies to the left side of the translation. The second one applies to the right side. If present, these flags override the current utf8 state. .SH "EXAMPLES" .IX Header "EXAMPLES" The following command creates a list of all the words in \fIfile1\fR one per line in \fIfile2\fR, where a word is taken to be a maximal string of alphabetics. .PP .Vb 1 \& tr \-cs A\-Za\-z "\en" file2 .Ve .PP The following command strips the 8th bit from an input file: .PP .Vb 1 \& tr "\e200\-\e377" "\e000\-\e177" .Ve .PP The following command translates Latin\-1 to Unicode: .PP .Vb 1 \& tr \-CU "\e0\-\exFF" "" .Ve .PP The following command translates Unicode to Latin\-1 .PP .Vb 1 \& tr \-UC "\e0\-\ex{FF}" "" .Ve .SH "NOTE" .IX Header "NOTE" This command is implemented using Perl's \f(CW\*(C`tr\*(C'\fR operator. See the documentation in perlop for details on its operation. .SH "BUGS" .IX Header "BUGS" There is no way to catch the file open error on \s-1ARGV\s0 handle processing, so the exit status does not reflect file open failures. .PP Not all systems have Unicode support yet, in which case the \&\fB\-U\fR or \fB\-C\fR flags would cause a fatal error. .SH "AUTHOR" .IX Header "AUTHOR" Tom Christiansen, \fItchrist@perl.com\fR. .SH "COPYRIGHT and LICENSE" .IX Header "COPYRIGHT and LICENSE" This program is copyright (c) Tom Christiansen 1999. .PP This program is free and open software. You may use, modify, distribute, and sell this program (and any modified variants) in any way you wish, provided you do not restrict others from doing the same.