48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH TR 1
 | |
| .SH NAME
 | |
| tr \- translate character codes
 | |
| .SH SYNOPSIS
 | |
| \fBtr\fR [\fB\-cds\fR]\fR [\fIstring1\fR] [\fIstring2\fR]\fR
 | |
| .br
 | |
| .de FL
 | |
| .TP
 | |
| \\fB\\$1\\fR
 | |
| \\$2
 | |
| ..
 | |
| .de EX
 | |
| .TP 20
 | |
| \\fB\\$1\\fR
 | |
| # \\$2
 | |
| ..
 | |
| .SH OPTIONS
 | |
| .FL "\-c" "Complement the set of characters in \fIstring1\fR"
 | |
| .FL "\-d" "Delete all characters specified in \fIstring1\fR"
 | |
| .FL "\-s" "Squeeze all runs of characters in \fIstring1\fR to one character"
 | |
| .SH EXAMPLES
 | |
| .EX "tr \(fmA\-Z\(fm \(fma\-z\(fm <x >y     " "Convert upper case to lower case"
 | |
| .EX "tr \-d \(fm0123456789\(fm <f1 >f2  " "Delete all digits from \fIf1\fR"
 | |
| .SH DESCRIPTION
 | |
| .PP
 | |
| .I Tr
 | |
| performs simple character translation.
 | |
| When no flag is specified, each character in 
 | |
| .I string1
 | |
| is mapped onto the corresponding character in
 | |
| .I string2 .
 | |
| .PP
 | |
| There are two types of
 | |
| .I tr
 | |
| out there, one that requires [ and ] for character classes, and one that does
 | |
| not.  Here is what the example above would look like for a
 | |
| .I tr
 | |
| that needs the brackets:
 | |
| .PP
 | |
| .RS
 | |
| .B "tr \(fm[A\-Z]\(fm \(fm[a\-z]\(fm <x >y"
 | |
| .RE
 | |
| .PP
 | |
| Use [ and ] if you want to be portable, because a
 | |
| .I tr
 | |
| that doesn't need them will still accept the syntax and mindlessly
 | |
| translate [ into [ and ] into ].
 | 
