tr命令用法

tr 命令

用途

转换字符

语法

tr [OPTION] String1 String2

tr [OPTION] String1

选项

  1. 如果 String1String2 两者都已指定,但 -d 选项没有指定 > 替换

    tr 命令就会从标准输入中将 String1 中所包含的每一个字符都替换成 String2 中相同位置上的字符。

  2. -d 选项 > 删除包含在由 String1 指定的字符串中的每个字符

    -C 选项和 -d 选项一起指定时,将删除所有除 String1 指定的那些字符以外的字符。

    忽略 String2 的内容,除非也指定了 -s 选项。

  3. -s 选项 > 在重复部分执行单次操作后删除其余部分 ,不指定该选项 全部执行一次 > 在 重复的部分中 只操作 第一个匹配的 , 删除其他重复部分

    示例 :

    echo aaaa | tr 'a' 'b'

    结果是 bbbb

    echo aaaa | tr -s 'a' 'b'

    结果是 b

    echo aa aa | tr -s 'a' 'b'

    结果是 b b

  4. -C -c 选项

    反向操作

    操作 String1 匹配到的 剩下其余部分

    即除了由 String1 指定的字符以外

    1. 如果指定了 -c 和 -s 选项,则 -s 选项适用于 String1 的补码中的字符。
    2. 如果没有指定 -d 选项,则由 String1 指定的字符的补码将放置到升序排列的数组中(如 LC_COLLATE 的当前设置所定义)。

表达字符串的特殊序列(重点)

String1String2 变量中所包含的字符串可以使用以下的约定来表示:

  1. C1-C2 指定了 C1 所指定的字符和 C2 所指定的字符之间(包括 C1C2)进行整理的字符串。 > C1 所指定的字符必须整理放在由 C2 所指定的字符之前。

  2. [C*Number] Number 是一个整数,它指定了由 C 所指定的字符的重复次数。 > 除非其首位数字是 0,否则 Number 一律视为是十进制整数;如果首位数字是 0,则视为八进制整数。

  3. [C*]C 指定的字符填写字符串。 > 该选项只用于包含在 String2 中的字符串末尾,它强制 String2 中的字符串具有与由 String1 变量所指定的字符串一样的字符数。 >> *(星号)后面指定的任何字符都被忽略。

  4. [ :ClassName: ] > 指定由当前语言环境中的 ClassName 所命名的字符类中的所有字符。

    类名可以是下述名称中的任何一种:

    sh [:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符

有关字符类的详细情况,请参阅 ctype 子例程。

  1. [ =C= ] 指定所有的字符具有与 C 所指定的字符相同的等价类。

    \Octal 指定字符,其编码由 Octal 所指定的八进制值表示。

    Octal 可以是 1 位、2 位 或 3 位八进制整数。

    空字符可以用 \0 表示,并可以像任何其它的字符那样进行处理。

    \ControlCharacter 指定与 ControlCharacter 所指定的值相应的控制字符。

    可以表示以下值:

    \a  警告
    \b  退格键
    \f  换页
    \n  换行
    \r  回车
    \t  制表键
    \v  垂直制表键
    \\  规定 `\`(反斜杠)就是作反斜杠使用,而无作为转义字符的任何特殊意义。
    \[  指定 `[`(左括号)就作为左括号使用,而无作为特定字符串序列的开始字符的任何特殊意义。
    \-  指定 `-`(负号)就作为负号使用,而无作为范围分隔符的任何特殊意义。
    

如果某个字符在 String1 中被指定过多次,则该字符就被转换成 String2 中为与 String1 中最后出现的字符相对应的字符。

如果由 String1String2 指定的字符串长度不相同,则 tr 命令就会忽略较长一个字符串中的多余字符。


退出状态

该命令返回以下出口值:

  1. 0 所有输入处理成功。

  2. >0 产生错误。