电脑技术学习

使用 UNIX 进行文本处理

dn001

  研究这些命令的输出结果(请参见清单 5),可以看出 tr 的工作方式(提示:它直接使用第二个集合中相应的字符来代替第一个集合中的字符)。

  清单 5. tr 进行了哪些工作?

chrish@dhcp3 [199]$ echo "a test" | tr t p
a pesp
chrish@dhcp3 [200]$ echo "a test" | tr aest 1234
1 4234
chrish@dhcp3 [201]$ echo "a test" | tr -d t
a es
chrish@dhcp3 [202]$ echo "a test" | tr '[:lower:]' '[:upper:]'
A TEST

  第一个和第二个示例都很简单,将一个字符替换为另一个字符。第三个示例使用了 -d 选项 (delete),它从输出中彻底删除了指定的字符。这个选项通常用来从 Dos 文本文件中删除回车,以将其转换为 Unix 文本文件(请参见清单 6)。最后一个示例使用了字符类([: :] 中的名称),以将所有的小写字母转换为大写字母。可移植操作系统接口标准(POSIX 标准)字符类包括:

  • alnum:字母数字字符
  • alpha:字母字符
  • cntrl:控制(非打印)字符
  • digit:数字字符
  • graph:图形字符
  • lower:小写字母字符
  • print:可打印字符
  • punct:标点符号
  • space:空白字符
  • upper:大写字符
  • xdigit:十六进制字符
  •   清单 6. 将 DOS 文本文件转换为 UNIX 文本文件

    tr -d '
    ' < input_dos_file.txt > output_unix_file.txt

      尽管 tr 命令表示了 C locale 环境变量(有关这些环境变量更多的信息,可以使用 man locale),但是不要指望它能够对 UTF-8 文档进行任何合理的操作,如能够使用合适的大写字符替换小写重音字符。tr 命令最适合于 ASCII 和其他标准 C 区域设置。

    标签: