trposix - 云端在线

这是 trposix 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


tr — 翻译字符

概要


tr [-c|-C] [-s] string1 string2

tr -s [-c|-C] string1

tr -d [-c|-C] string1

tr -ds [-c|-C] string1 string2

商品描述


这款 tr 实用程序应将标准输入复制到标准输出并替换或
删除选定的字符。 指定的选项和 string1string2
操作数应控制复制字符和单字符时发生的翻译
字符整理元素。

配置


这款 tr 实用程序应符合 POSIX.1-2008 的基本定义卷, 部分 12.2,
公用事业 句法 指南.

应支持以下选项:

-c 补充由指定的值集 string1. 请参阅扩展说明
部分。

-C 补充由指定的字符集 string1. 见扩展
说明部分。

-d 删除所有出现的由指定的输入字符 string1.

-s 用单个字符替换重复字符的实例,如所述
在扩展描述部分。

操作数


应支持以下操作数:

string1, string2
翻译控制字符串。 每个字符串应代表一组字符
转换为用于翻译的字符数组。 为一个
有关如何解释字符串的详细说明,请参阅 EXTENDED
说明部分。

标准输入


标准输入可以是任何类型的文件。

INPUT FILES


无。

环境 变数


以下环境变量会影响执行 tr:

为未设置或未设置的国际化变量提供默认值
空值。 (参见 POSIX.1-2008 的基本定义卷, 部分 8.2,
国际化 变量 为国际化优先
用于确定语言环境类别值的变量。)

LC_ALL 如果设置为非空字符串值,则覆盖所有其他字符串的值
国际化变量。

LC_COLLATE
确定范围表达式和等价行为的语言环境
类。

LC_CTYPE 确定用于解释文本数据字节序列的语言环境
作为字符(例如,单字节而不是多字节字符
参数)和字符类的行为。

LC_消息
确定应该用于影响格式和内容的语言环境
写入标准错误的诊断消息。

路径 确定用于处理的消息目录的位置 LC_消息.

异步 新闻


默认。

标准输出


这款 tr 输出应与输入相同,但指定的除外
转换。

斯特德


标准错误应仅用于诊断消息。

OUTPUT FILES


无。

EXTENDED 商品描述


操作数 string1string2 (如果指定)定义两个字符数组。 这
以下列表中的结构可用于指定字符或单字符
整理元素。 如果任何构造导致多字符整理元素,
tr 应在没有诊断的情况下从结果中排除那些多字符元素
数组。

字符 以下任一约定未描述的任何字符均应代表
本身。

八进制 八进制序列可用于表示具有特定编码值的字符。
一个八进制序列应包括一个其次是最长的
一个、两个或三个八进制数字字符的序列 (01234567)。 序列
应导致其编码由一、二或三表示的值
要放入数组的数字八进制整数。 多字节字符需要
这种类型的多个串联转义序列,包括前导
对于每个字节。

字符
这- POSIX.1-2008 基本定义卷中的转义序列,
5-1, 逃生 序列 关联的 行动 ('\\', '\一种', '\b', '\F',
'\n', '\r', '\t', '\v') 应予以支持。 使用其他任何结果
八进制数字以外的字符未指定。
另外,如果后面没有字符,结果是
未指定。

c - c 在 POSIX 语言环境中,此构造应表示整理的范围
范围端点之间的元素(只要端点都不是八进制
表格的顺序 八进制),包含,由整理序列定义。
范围内的字符或整理元素应放在数组中
按升序排列顺序。 如果第二个端点在起始点之前
整理序列中的端点,未指定范围是否
整理元素为空,或者此构造被视为无效。 在语言环境中
除了 POSIX 语言环境,此构造具有未指定的行为。

如果一个或两个范围端点都是以下形式的八进制序列 八进制,
这应表示两个范围之间的特定编码值的范围
端点,包括。

[::] 代表属于定义字符类的所有字符,如定义
通过当前的设置 LC_CTYPE 语言环境类别。 以下字符
在指定时应接受类名 string1:

名册 空白 数字 降低
阿尔法 控制中心 图形 打印 空间 数字

此外,形式为 [:姓名:] 应该
在那些地方承认 姓名 关键字已被赋予 字符类
中的定义 LC_CTYPE 类别。

当两者都 -d-s 选项被指定,任何字符类名称
将被接受 string2. 否则,只有字符类名称 降低 or
有效于 string2 然后只有当相应的字符类
(降低, 分别) 指定在相同的相对位置
string1. 此类规范应被解释为对案例的请求
转换。 什么时候 [:降低:] 出现在 string1 和 [::] 出现在 string2,
数组应包含来自 上衣 映射在 LC_CTYPE
当前语言环境的类别。 什么时候 [::] 出现在 string1 和 [:降低:]
出现在 string2,数组应包含来自 降低
映射在 LC_CTYPE 当前语言环境的类别。 第一个字符来自
每个映射对应在数组中 string1 和第二个字符
从每个映射对应在数组中 string2 在同一个亲戚
位置。

除大小写转换外,字符类指定的字符
表达式应以未指定的顺序放置在数组中。

如果指定的名称 没有定义一个有效的字符类
当前语言环境,行为未定义。

[=等效=] 代表所有字符或属于相同的整理元素
等价类为 等效, 由当前设置定义 LC_COLLATE
语言环境类别。 等价类表达式只允许在
string1,或是在 string2 当它被组合使用时 -d-s 选项​​。
属于等价类的字符应放在数组中
以未指定的顺序。

[x*n] 代表 n 字符的重复出现 x. 因为这个表情
用于将多个字符映射为一个,仅当出现在
string2。 如果 n 被省略或为零,它应被解释为足够大
扩展 string2-基于序列的长度 string1基于序列。
If n 有一个前导零,它应该被解释为一个八进制值。 除此以外,
它应被解释为十进制值。

当。。。的时候 -d 未指定选项:

*如果 string2 存在,在指定的数组中找到的每个输入字符 string1
应替换为数组中相同相对位置的字符
string2. 如果由指定的数组 string2 比那个更短
string1, 或者如果一个字符在 string1,结果
未指定。

* 如果 -C 选项被指定,由指定的字符的补码 string1
(当前字符集中所有字符的集合,由当前字符定义
的设置 LC_CTYPE,除了那些实际指定的 string1 操作数)应
以升序排列顺序放置在数组中,如当前定义的
的设置 LC_COLLATE.

* 如果 -c 选项被指定,由指定的值的补充 string1
按二进制值升序排列在数组中。

* 因为字符类表达式指定的字符顺序或
等价类表达式未定义,只有在以下情况下才应使用此类表达式
目的是将多个字符映射为一个。 一个例外是大小写转换,如
之前描述过。

当。。。的时候 -d 指定选项:

* 在指定的数组中找到的输入字符 string1 将被删除。

* 当。。。的时候 -C 选项指定为 -d, 除由指定的字符外的所有字符
string1 将被删除。 的内容 string2 被忽略,除非 -s 选项是
还规定。

* 当。。。的时候 -c 选项指定为 -d, 除指定的值以外的所有值 string1
将被删除。 的内容 string2 将被忽略,除非 -s 选项是
还规定。

* 两个字符串不能使用相同的字符串 -d-s 选项; 当两个选项
指定,两者 string1 (用于删除)和 string2 (用于挤压)应
需要。

当。。。的时候 -s 选项被指定,在任何删除或翻译发生后,
相同字符的重复序列应替换为一次相同的
字符,如果在最后一个操作数指定的数组中找到该字符。 如果
最后一个操作数包含一个字符类,例如以下示例:

tr -s '[:空间:]'

最后一个操作数的数组应包含该字符类中的所有字符。
但是,在一个案例转换中,如前所述,例如:

tr -s '[:上:]' '[:降低:]'

最后一个操作数的数组应仅包含定义为第二个的那些字符
每个字符中的 上衣 or 降低 字符对,视情况而定。

一个空字符串用于 string1 or string2 产生未定义的结果。

退出 状态


应返回以下退出值:

0 所有输入均已成功处理。

>0 发生错误。

后果 OF 错误


默认。

这款 以下 部分 旨在 内容丰富。

申请须知 用法


如有需要, string1string2 可以被引用以避免 shell 进行模式匹配。

如果一个普通数字(代表自己)要遵循一个八进制序列,则八进制数
序列必须使用完整的三位数字以避免歧义。

什么时候 string2 短于 string1, 历史系统 V 和
BSD 系统。 一个 BSD 系统垫 string2 与在中找到的最后一个字符 string2。 因此,它
可以执行以下操作:

tr 0123456789 d

这会将所有数字转换为字母 'd'. 由于这个区域是专门
在本卷 POSIX.1-2008 中未指定,BSD 和 System V 行为都是
允许,但符合标准的应用程序不能依赖于 BSD 行为。 它必须
按以下方式对示例进行编码:

tr 0123456789 '[d*]'

应该注意的是,尽管外观相似,但所使用的字符串操作数
tr 不是正则表达式。

与一些历史实现不同,这个定义 tr 正确使用
处理其输入流中的 NUL 字符。 可以使用以下方法去除 NUL 字符:

tr -d '\000'

示例


1. 下面的例子创建了一个包含所有单词的列表 file1 每行一个 file2,
其中一个词被认为是一个最大的字母串。

tr -cs “[:α:]” "[\n*]" <文件1 > 文件 2

2.下一个例子翻译所有小写字符 file1 大写并写入
结果到标准输出。

tr “[:降低:]” “[:上:]” <文件1

3. 这个例子使用一个等价类来识别基础的重音变体
字符 'e' in file1, 去掉变音符号并写入 file2.

tr “[=e=]” “[e*]” <文件1 > 文件 2

基本原理


在一些早期的提案中,一个明确的选项 -n 添加以禁用历史
从输入中剥离 NUL 字符的行为。 被认为自动
从输入中剥离 NUL 字符是不正确的功能。 然而
去除 -n 在以后的提案中并没有取消要求 tr 正确地
处理其输入流中的 NUL 字符。 可以通过使用剥离 NUL 字符 tr -d
'\000'。

的历史实现 tr 在语法和行为上有很大的不同。 例如,
BSD 版本不需要用于重复序列的括号字符。 这 tr
实用程序语法更接近于 System V 和 XPG3 模型,同时试图
适应历史上的 BSD 实现。 在短的情况下 string2 填充
决定是取消指定行为并保留 System V 和 XPG3 脚本,这可能
发现 BSD 方法有困难。 假设 BSD 用户 tr
进行调整以满足此处定义的语法。 由于可以使用
重复序列来复制所需的行为,而没有简单的方法可以
实现 System V 方法,这是正确的方法,如果不理想的话。

使用八进制值来指定控制字符,同时有历史先例,
不便携。 控制字符转义序列的引入应该
提供必要的便携性。 人们认识到这可能会导致一些历史
脚本来打破。

早期的提案包括对多字符整理元素的支持。 有人指出
出来,同时 tr 确实使用了 RE 中的一些句法元素,目的是 tr 安静
不同的; 例如,范围没有类似的含义(``
范围匹配'', 而不是 ``将范围内的每个字符转换为输出
对方'')。 因此,之前包含的对多字符整理的支持
元素已被删除。 剩下的是当前整理顺序的范围(以支持,
例如,重音字符)、字符类和等价类。

在 XPG3 中 [::] 和 [=等效=] 约定用双括号显示,如 RE
句法。 然而, tr 不实施可再生能源原则; 它只是借用了部分语法。
最后, [::] 和 [=等效=] 应该被视为同等的句法元素
和 [x*n],这不是 RE 括号表达式。

标准开发人员将考虑更改 tr 允许它翻译字符
不同的字符编码之间,或者他们会考虑提供一个新的实用程序
做到这一点。

在历史上的 System V 系统中,范围表达式需要用方括号括起来,
的条件,如

tr '[az]' '[AZ]'

然而,基于 BSD 的系统不需要括号,这里使用这个约定
避免破坏大量 BSD 脚本:

tr AZ A-Z

前面的 System V 脚本将继续工作,因为括号被视为
常规字符,被翻译成自己。 但是,任何 System V 脚本
"a-z" 代表三个字符 '一种', '-''z' 必须重写
as “阿兹-”.

ISO POSIX-2:1993 标准有一个 -c 行为类似于 -C 选项,但是
没有提供等同于 -c POSIX.1-2008 中指定的选项。 这个
意味着能够指定的历史实践 tr -cd\000−\177 (这将
删除所有设置了最高位的字节)将不起作用,因为在 C 语言环境中,
值为八进制 200 到八进制 377 的字节不是字符。

早期版本还说八进制序列指的是整理元素和
可以彼此相邻放置以指定多字节字符。 然而,这是
注意到这引起了歧义,因为 tr 无法判断是否相邻
八进制序列打算指定多字节字符或多个单字节
人物。 POSIX.1-2008 规定八进制序列总是指单字节二进制
用于指定一系列整理元素的端点时的值。

该标准的早期版本允许使用八字节以外的字节实现
位,但这已在此版本中进行了修改。

未来 如何前往


无。

使用 onworks.net 服务在线使用 trposix



最新的 Linux 和 Windows 在线程序