'\" te .\" Copyright 1989 AT&T Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Portions Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation.Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation.In the following statement, the phrase "this text" refers to portions of the system documentation.Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group.In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document.The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.This notice shall appear on any product containing this material. .TH tr 1 "2009 年 3 月 3 日" "SunOS 5.11" "用户命令" .SH 名称 tr \- 转换字符 .SH 用法概要 .LP .nf \fB/usr/bin/tr\fR [\fB-cds\fR] [\fIstring1\fR [\fIstring2\fR]] .fi .LP .nf \fB/usr/xpg4/bin/tr\fR [\fB-cs\fR] \fIstring1\fR \fIstring2\fR .fi .LP .nf \fB/usr/xpg4/bin/tr\fR \fB-s\fR | \fB-d\fR [\fB-c\fR] \fIstring1\fR .fi .LP .nf \fB/usr/xpg4/bin/tr\fR \fB-ds\fR [\fB-c\fR] \fIstring1\fR \fIstring2\fR .fi .LP .nf \fB/usr/xpg6/bin/tr\fR [\fB-c\fR | \fB-C\fR] [\fB-s\fR] \fIstring1\fR \fIstring2\fR .fi .LP .nf \fB/usr/xpg6/bin/tr\fR \fB-s\fR [\fB-c\fR | \fB-C\fR] \fIstring1\fR .fi .LP .nf \fB/usr/xpg6/bin/tr\fR \fB-d\fR [\fB-c\fR | \fB-C\fR] \fIstring1\fR .fi .LP .nf \fB/usr/xpg6/bin/tr\fR \fB-ds\fR [\fB-c\fR | \fB-C\fR] \fIstring1\fR \fIstring2\fR .fi .SH 描述 .sp .LP \fBtr\fR 实用程序可以在替换或删除选定字符的同时,将标准输入复制到标准输出。指定的选项以及 \fIstring1\fR 和 \fIstring2\fR 操作数控制复制多字符和单字符整理元素时发生的转换。 .SH 选项 .sp .LP 支持以下选项: .sp .ne 2 .mk .na \fB\fB-c\fR\fR .ad .RS 6n .rt 补充由 \fIstring1\fR 指定的一组值。 .RE .sp .ne 2 .mk .na \fB\fB-C\fR\fR .ad .RS 6n .rt 补充由 \fIstring1\fR 指定的一组字符串。 .RE .sp .ne 2 .mk .na \fB\fB-d\fR\fR .ad .RS 6n .rt 删除出现的所有由 \fIstring1\fR 指定的输入字符。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR\fR .ad .RS 6n .rt 将重复字符的实例替换为单个字符。 .RE .sp .LP 如果未指定 \fB-d\fR 选项: .RS +4 .TP .ie t \(bu .el o 在 \fIstring1\fR 指定的数组中找到的每个输入字符都将替换为 \fIstring2\fR 指定的数组中同一相对位置的字符。如果 \fIstring2\fR 指定的数组比 \fIstring1\fR 指定的数组短,则产生的结果不确定。 .RE .RS +4 .TP .ie t \(bu .el o 如果指定了 \fB-c\fR 选项,则会将 \fIstring1\fR 指定的值的补集按二进制值升序顺序置于数组中。 .RE .RS +4 .TP .ie t \(bu .el o 如果指定了 \fB-C\fR 选项,则会将 \fIstring1\fR 指定的字符的补集(按照 \fBLC_CTYPE\fR 当前设置的定义,除在 \fIstring1\fR 操作数中实际指定的字符以外,当前字符集中所有字符的组合)按升序整理序列(由 \fBLC_COLLATE\fR 的当前设置定义)置于数组中。 .RE .RS +4 .TP .ie t \(bu .el o 由于字符类表达式或等效类表达式指定的字符的顺序不确定,因此仅当要将多个字符映射到一个字符时,才能使用此类表达式。前面已经提到,大小写转换除外。 .RE .sp .LP 如果指定了 \fB-d\fR 选项: .RS +4 .TP .ie t \(bu .el o 将删除在 \fIstring1\fR 指定的数组中找到的输入字符。 .RE .RS +4 .TP .ie t \(bu .el o 如果同时指定了 \fB-C\fR 选项和 \fB-d\fR 选项,则删除由 \fIstring1\fR 指定的值以外的所有值。除非也指定了 \fB-s\fR 选项,否则将忽略 \fIstring2\fR 的内容。 .RE .RS +4 .TP .ie t \(bu .el o 如果指定了 \fB-c\fR 选项,则会将 \fIstring1\fR 指定的值的补集按二进制值升序顺序置于数组中。 .RE .RS +4 .TP .ie t \(bu .el o 同一字符串不能同时用于 \fB-d\fR 和 \fB-s\fR 选项。如果同时指定了这两个选项,则同时需要 \fIstring1\fR(用于删除)和 \fIstring2\fR(用于压缩)。 .RE .sp .LP 如果指定了 \fB-s\fR 选项,执行任何删除或转换后,如果在最后一个操作数指定的数组中找到了重复字符,会将同一字符的重复序列替换为出现一次。如果最后一个操作数包含字符类,如以下示例: .sp .in +2 .nf \fBtr -s '[:space:]'\fR .fi .in -2 .sp .sp .LP 最后一个操作数的数组将包含该字符类中的所有字符。但是,前面已经提到,执行如下大小写转换时: .sp .in +2 .nf \fBtr -s '[:upper:]' '[:lower:]'\fR .fi .in -2 .sp .sp .LP 最后一个操作数的数组只包含定义为每个 \fBtoupper\fR 或 \fBtolower\fR 字符对(视情况而定)中的第二个字符。(请参见 \fBtoupper\fR(3C) 和 \fBtolower\fR(3C))。 .sp .LP 如果用于 \fIstring1\fR 或 \fIstring2\fR 的字符串为空,则产生的结果不确定。 .SH 操作数 .sp .LP 支持下列操作数: .sp .ne 2 .mk .na \fB\fIstring1\fR\fR .ad .br .na \fB\fIstring2\fR\fR .ad .RS 11n .rt 转换控制字符串。每个字符串表示要转变为用于转换的字符数组的一组字符。 .RE .sp .LP 操作数 \fIstring1\fR 和 \fIstring2\fR(如果已指定)可以定义两个字符数组。可以使用以下列表中的结构指定多字符或单字符整理元素。如果任何结构指定的是多字符整理元素,则 \fBtr\fR 会从生成的数组中排除(不发出诊断消息)这些多字符元素。 .sp .ne 2 .mk .na \fB\fIcharacter\fR\fR .ad .RS 14n .rt 以下各种转换均未提及的所有字符都表示其本身。 .RE .sp .ne 2 .mk .na \fB\fB\\fR\fIoctal\fR\fR .ad .RS 14n .rt 八进制序列可用于表示带有特定编码值的字符。八进制序列的结构是一个反斜杠后跟一位、两位或三位八进制字符 (01234567) 的最长序列。这种序列会导致将编码由一位、两位或三位八进制整数表示的字符置于数组中。多字节字符需要串联多个此类型的转义序列,其中每个字节包含前导 \。 .RE .sp .ne 2 .mk .na \fB\fB\\fR\fIcharacter\fR\fR .ad .RS 14n .rt 支持反斜杠转义序列 \fB\a\fR、\fB\b\fR、\fB\f\fR、\fB\n\fR、\fB\r\fR、\fB\t\fR 和 \fB\v\fR。如果反斜杠后跟除八进制数字之外的其他任何字符,则产生的结果都不确定。 .RE .SS "/usr/xpg4/bin/tr" .sp .ne 2 .mk .na \fB\fIc-c\fR\fR .ad .RS 7n .rt .RE .SS "/usr/bin/tr" .sp .ne 2 .mk .na \fB[\fIc-c\fR]\fR .ad .RS 13n .rt 在 POSIX 语言环境中,这种结构表示两个范围端点(只要两个端点都不是 \fB\\fR\fIoctal\fR 格式的八进制序列)之间(含)由整理序列定义的一系列整理元素。会将范围内的字符或整理元素按升序整理序列置于数组中。如果在整理序列中第二个端点在起始端点前面,则未指定是整理元素范围为空,还是将该结构视为无效。在除 POSIX 语言环境之外的语言环境中,该结构的行为不确定。 .sp 如果范围端点中的一个或两个同时为 \fB\\fR\fIoctal\fR 格式的八进制序列,则表示两个范围端点之间(含)的一系列特定编码二进制值。 .RE .sp .ne 2 .mk .na \fB\fB[:\fR\fIclass\fR\fB:]\fR\fR .ad .RS 13n .rt 表示属于定义的字符类(由 \fBLC_CTYPE\fR 语言环境类别的当前设置定义)的所有字符。\fIstring1\fR 中接受指定的以下字符类名称: .sp .in +2 .nf alnum blank digit lower punct upper alpha cntrl graph print space xdigit .fi .in -2 .sp 此外,在那些已经在 \fBLC_CTYPE\fR 类别中为 \fIname\fR 关键字指定了 \fBcharclass\fR 定义的语言环境中,可以识别 \fB[:\fR\fIname\fR\fB:]\fR 格式的字符类表达式。 .sp 如果同时指定了 \fB-d\fR 和 \fB-s\fR 选项,则 \fIstring2\fR 中将接受任何字符类名称。否则,只有 \fBlower\fR 或 \fBupper\fR 在 \fIstring2\fR 中有效,前提是必须在 \fIstring1\fR 中的同一相对位置分别指定相应的字符类 \fBupper\fR 和 \fBlower\fR。此类规范解释为大小写转换请求。如果 \fB[:lower:]\fR 出现在 \fIstring1\fR 中且 \fB[:upper:]\fR 出现在 \fIstring2\fR 中,则数组将包含通过当前语言环境下 \fBLC_CTYPE\fR 类别中的 \fBtoupper\fR 映射得到的字符。如果 \fB[:upper:]\fR 出现在 \fIstring1\fR 中且 \fB[:lower:]\fR 出现在 \fIstring2\fR 中,则数组将包含通过当前语言环境下 \fBLC_CTYPE\fR 类别中的 \fBtolower\fR 映射得到的字符。每对映射字符中的第一个字符在 \fIstring1\fR 的数组中,每对映射字符中的第二个字符在 \fIstring2\fR 的数组中同一相对位置。 .sp 但大小写转换除外,将字符类表达式指定的字符置于数组中的顺序不确定。 .sp 如果为 \fIclass\fR 指定的名称并未在当前语言环境下定义有效的字符类,则产生的行为不确定。 .RE .sp .ne 2 .mk .na \fB\fB[=\fR\fIequiv\fR\fB=]\fR\fR .ad .RS 13n .rt 表示按照 \fBLC_COLLATE\fR 语言环境类别当前设置的定义与 \fIequiv\fR 属于同一等效类的所有字符或整理元素。只有等效类表达式由 \fB-d\fR 和 \fB-s\fR 选项共同使用时,它才能在 \fIstring1\fR 或 \fIstring2\fR 中。将属于等效类的字符置于数组中的顺序不确定。 .RE .sp .ne 2 .mk .na \fB[\fIx*n\fR]\fR .ad .RS 13n .rt 表示字符 \fIx\fR 重复出现 \fIn\fR 次。由于该表达式用于将多个字符映射到一个字符,因此只有出现在 \fIstring2\fR 中时才有效。如果 \fIn\fR 带有前导 \fB0\fR,则会将其解释为八进制值。否则,将其解释为十进制值。 .sp 如果省略 \fIn\fR 或它为 \fB0\fR,则 \fB/usr/bin/tr\fR 会将其解释为极大的值;\fB/usr/xpg4/bin/tr\fR 和 \fB/usr/xpg6/bin/tr\fR 会将其解释为足够大的值,以便将基于 \fIstring2\fR 的序列扩展到基于 \fIstring1\fR 的序列的长度。 .RE .SH 用法 .sp .LP 有关 \fBtr\fR 遇到大于或等于 2 GB(2^31 字节)文件时行为的说明,请参见 \fBlargefile\fR(5)。 .SH 示例 .LP \fB示例 1 \fR创建字词列表 .sp .LP 以下示例将在 \fIfile1\fR 中创建所有字词的列表,在 \fIfile2\fR 中每行创建一个字词,其中每个字词被视为最大的字母字符串。 .sp .in +2 .nf \fBtr \(mics "[:alpha:]" "[\en*]" file2\fR .fi .in -2 .sp .LP \fB示例 2 \fR转换字符 .sp .LP 以下示例会将 \fBfile1\fR 中的所有小写字符转换为大写字符,并将结果写入标准输出。 .sp .in +2 .nf \fBtr "[:lower:]" "[:upper:]" file2\fR .fi .in -2 .sp .SH 环境变量 .sp .LP 有关影响 \fBtr\fR 执行的环境变量 \fBLANG\fR、\fBLC_ALL\fR、\fBLC_COLLATE\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR 和 \fBNLSPATH\fR 的说明,请参见 \fBenviron\fR(5)。 .SH 退出状态 .sp .LP 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 所有输入都已成功处理。 .RE .sp .ne 2 .mk .na \fB\fB>0\fR\fR .ad .RS 6n .rt 出现错误。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .SS "/usr/bin/tr" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os _ CSIEnabled(已启用) .TE .SS "/usr/xpg4/bin/tr" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/xopen/xcu4 _ CSIEnabled(已启用) _ 接口稳定性Committed(已确定) _ 标准请参见 \fBstandards\fR(5)。 .TE .SS "/usr/xpg6/bin/tr" .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/xopen/xcu6 _ CSIEnabled(已启用) _ 接口稳定性Committed(已确定) _ 标准请参见 \fBstandards\fR(5)。 .TE .SH 另请参见 .sp .LP \fBed\fR(1)、\fBsed\fR(1)、\fBsh\fR(1)、\fBtolower\fR(3C)、\fBtoupper\fR(3C)、\fBascii\fR(5)、\fBattributes\fR(5)、\fBenviron\fR(5)、\fBlargefile\fR(5)、\fBregex\fR(5)、\fBstandards\fR(5) .SH 附注 .sp .LP 与以前的某些版本不同,\fB/usr/xpg4/bin/tr\fR 可以正确处理输入流中的 \fBNUL\fR 字符。可以使用 \fBtr\fR \fB-d\fR \fB\&'\000'\fR 除去 \fBNUL\fR 字符。