清单 1. 将标准错误流连接到标准输出流
make > build-output 2>&1
命令
有两个常用来生成文本输出的标准 Unix 命令:cat 和 echo 。
cat 命令读取参数中指定的每个文件,并将这些文件的内容写入到 stdout 。echo 命令将其参数写入到 stdout 。您常常会发现它们作为更复杂的命令管道中的一部分(请参见清单 2) 。
清单 2. 使用 cat 和 echo
cat file1 file2 ... filen
echo arguments...
但如果您只需要文件中开头的部分或结尾的部分,那又应该如何呢?cat 有两种可用来完成这种任务的变种,称为 head 和 tail(请参见清单 3),它们分别可以显示开头的或结尾的 10 行内容,您可以使用 -n 选项为它们指定不同的行数 。
清单 3. 使用 head 和 tail
head file1 file2 ... filen
tail file1 file2 ... filen
tail 命令还有一个有用的选项 -f (follow) 。该选项告诉 tail 打印指定文件的最后 10 行,但是它不仅打印已有的内容,还会等待该文件中将要出现的更多内容,并对其进行打印 。您可以使用该选项接着 显示错误日志中的输出,例如,要在将错误写入到日志的同时查看这些错误 。
转换文本
既然您已经了解了至少 5 种生成文本的方式,下面让我们来看一些进行简单文本转换的示例 。
tr 命令允许您将一个集合中的字符转换为另一个集合中相应的字符 。让我们来看一些示例(清单 4),以了解其工作方式 。
清单 4. 使用 tr 对字符进行转换
echo "a test" | tr t p
echo "a test" | tr aest 1234
echo "a test" | tr -d t
echo "a test" | tr '[:lower:]' '[:upper:]'
研究这些命令的输出结果(请参见清单 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 区域设置 。
使用 sed 进行复杂的搜索和替换
tr 命令所提供的单字符替换(或删除)功能非常适用于特定的解决方案,但是这些功能并不是很灵活 。如果您需要将一个单词替换为另一个单词,或将连续的空格和制表符替换为一个空格,那又应该怎么办呢?
幸运的是,您可以使用 sed 命令 (Stream EDitor),它提供了功能强大的正则表达式 匹配和替换 。正则表达式是使用各种构件构建的复杂模式规范,并且随着模式变得越来越复杂,它看起来就像是调制解调器的线路噪声 。本文并不打算详细地介绍正则表达式,但是在本文中,您将简单了解 sed 所使用的一些有用的模式 。
推荐阅读
- 一 V226选购、使用记
- 如何移动UNIX目录
- SCO UNIX基础讲座--第五讲:电子邮件
- MP3使用5天感觉
- SCO UNIX基础讲座--第六讲:後援复制
- 在sco 5.0.5中定时运行程序
- 使用半年小评桑达5300优缺点
- 使用ppt制作出小人跑步动画效果具体操作方法
- 在SCO下直接使用ISO镜像安装软件的方法
- SCO UNIX 5 的引导过程
