linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 专题栏目 > LPI >
栏目导栏
  LPI
  cisco
资料搜索
热门文章
·LPI 101认证学习1-硬件和体系结
· LPI 101认证学习7-Linux安装与
·LPI 101认证学习26-X Window 系
·LPI 101认证学习8-Linux安装与
·LPI 101认证学习15-GNU和UNIX命
·LPI 101认证学习28-X Window 系
·LPI 101认证学习10-Linux安装与
·LPI 101认证学习11-GNU和UNIX命
·LPI 101&102 2007年考试大纲
·LPI 101认证学习18-设备、Linu
·LPI 101认证学习27-X Window 系
·LPI 101认证学习14-GNU和UNIX命
·LPI 101认证学习12-GNU和UNIX命
·LPI考试流程
· LPI 101认证学习9-Linux安装与
最新文章
·LPI 101&102 2007年考试大纲
·LPI 302中文考试大纲
·LPI 301中文考试大纲
·LPIC-3认证考试内容最终确定
·LPI 101认证学习28-X Window 系
·LPI 101认证学习27-X Window 系
·LPI 101认证学习26-X Window 系
·LPI 101认证学习25-设备、Linu
·LPI 101认证学习24-设备、Linu
·LPI 101 学习指南:一.安装网络
·LPI 101 学习指南:一.安装 本地
· 安装光盘介绍(The Installati
·LPI 101认证学习23-设备、Linu
·LinuxWorld上海开展 LPI与众多
·LPI 和 Canonical 联合发布Ubu
Google
 
LPI 101认证学习12-GNU和UNIX命令之文本流和过滤器
[ 作者:  加入时间:2006-11-22 12:37:44  来自:Linux联盟 ]

文本流和过滤器

本节讨论初级管理(LPIC-1)考试 101 的主题 1.103.2 的内容。这个主题的权值是 6

在本节中,学习以下主题:

  • 通过文本工具过滤器发送文本文件和输出流,从而修改输出

  • 使用 GNU textutils 包中的标准 UNIX 命令

文本过滤

文本过滤 就是获取文本输入流,在文本上执行某些转换,然后将它发送到输出流的过程。尽管输入或输出可以是文件,但是在 Linux UNIX 环境中,进行过滤的最常用方式是构造命令的管道,也就是对一个命令的输出进行管道连接(即 重定向),用作下一个命令的输入。管道和重定向将在 流、管道和重定向 一节中更完整地讨论,目前,我们来看看使用 | > 操作符的管道和基本输出重定向。

| 构造管道

前面一节提到过,shell 使用三种标准 I/O

  • stdin 标准输入流,它向命令提供输入。

  • stdout 标准输出流,它显示来自命令的输出。

  • stderr 标准错误流,它显示来自命令的错误输出。

在本教程中到目前为止,输入都是来自我们提供给命令的参数,输出都显示在终端上。许多文本处理命令(过滤器)可以从标准输入流或文件获得输入。要想将一个命令(command1)的输出用作一个过滤器(command2)的输入,应该使用管道操作符(|)连接这两个命令,如清单 20 所示。

Ug5Linux联盟
清单 20. 通过管道将 command1 的输出连接到 command2 的输入

 

                                      

command1 | command2

 

正如在本节后面会看到的,这两个命令都可能有选项或参数。还可以使用 | 将这个管道中 command2 的输出重定向到另一个命令,command3。将功能有限的多个命令连接成长的管道是在 Linux UNIX 上完成任务的常用方式。有时还会看到连字符(-)用来替代文件名作为命令参数,这意味着输入应该来自 stdin 而不是文件。

> 进行输出重定向

能够用几个命令创建管道并在终端上看到输出固然很不错,但是有时候希望将输出保存到文件中。这要使用输出重定向操作符(>)来完成。

对于本节的其余部分,我们将使用一些小文件,所以先创建一个称为 lpi103 的目录,然后进入这个目录。然后使用 >  echo 命令的输出重定向到 text1 文件。这些操作见清单 21。注意,输出没有显示在终端上,因为它被重定向到文件了。

Ug5Linux联盟
清单 21. echo 命令的输出重定向到文件

 

                                      

[ian@echidna ian]$ mkdir lpi103

[ian@echidna ian]$ cd lpi103

[ian@echidna lpi103]$ echo -e "1 apple\n2 pear\n3 banana">text1

 

既然我们已经有了进行管道连接和重定向的基本工具,就来看一些常用的 UNIX Linux 文本处理命令和过滤器。本节只展示一些基本功能;请通过适当的手册页进一步了解这些命令。

cattacod split

既然已经创建了 text1 文件,您可能想看看其中的内容。使用 catcatenate 的简写)命令将文件的内容显示在 stdout 上。清单 22 检查上面创建的文件的内容。

Ug5Linux联盟
清单 22. cat 显示文件内容

 

                                      

[ian@echidna lpi103]$ cat text1

1 apple

2 pear

3 banana

 

如果不指定文件名(或者指定 - 为文件名),那么 cat 命令从 stdin 接收输入。让我们使用这种方式和输出重定向来创建另一个文本文件,如清单 23 所示。

Ug5Linux联盟
清单 23. cat 创建文本文件

 

                                      

[ian@echidna lpi103]$ cat>text2

9       plum

3       banana

10      apple

 

在清单 23 中,cat  stdin 读取输入,直到文件的末尾。使用 Ctrl-d(按住 Ctrl 并按下 d)组合键来表示文件的末尾。这个组合键也用来退出 bash shell。还要注意,制表符键帮助将这些水果名按列排列起来。

有时候,可能希望按相反的次序显示文件。很自然,也有一个用于此目的的文本过滤器,称为 taccat 的反序)。清单 24 按相反的次序显示新的 text2 文件和原来的 text1 文件。注意显示中如何简单地连接这两个文件。

Ug5Linux联盟
清单 24. tac 进行反序显示

 

                                      

[ian@echidna lpi103]$ tac text2 text1

10      apple

3       banana

9       plum

3 banana

2 pear

1 apple

 

现在假设使用 cat tac 显示这两个文本文件并注意到对齐方式不一样。要了解造成这个问题的原因,需要看到文件中的控制字符。因为这些控制字符的作用是进行文本显示输出,而控制字符本身没有显示,所以需要将文件转储 为另一种格式,从而能够寻找和解释这些特殊字符。GNU 文本实用程序包含的 od(即 Octal Dump)命令用于这个目的。

od 有几个选项,比如 -A 选项用来控制文件偏移量的基数,-t 选项用来控制显示的文件内容的形式。基数可以指定为 o(八进制 - 默认)、d(十进制)、x(十六进制)或 n(不显示偏移量)。可以将输出显示为八进制、十六进制、十进制、浮点、用反斜线转义的 ASCII 或命名的字符(nl 表示新行,ht 表示水平制表符,等等)。清单 25 显示一些可以用来对 text2 示例文件进行转储的格式。

Ug5Linux联盟
清单 25. od 对文件进行转储

 

                                      

[ian@echidna lpi103]$ od text2

0000000 004471 066160 066565 031412 061011 067141 067141 005141

0000020 030061 060411 070160 062554 000012

0000031

[ian@echidna lpi103]$ od -A d -t c text2

0000000   9  \t   p   l   u   m  \n   3  \t   b  a  n  a  n  a \n

0000016   1   0  \t   a   p   p   l   e  \n

0000025

[ian@echidna lpi103]$ od -A n -t a text2

   9  ht   p   l   u   m  nl   3  ht   b   a   n   a   n   a  nl

   1   0  ht   a   p   p   l   e  nl

 

注意:

1.      cat  -A 选项也可以用来查看制表符和行末的位置。更多信息参见手册页。

2.      如果您具有大型机背景,就可能对 hexdump 实用程序感兴趣,这是另一个实用程序集的一部分。这里不讨论它,请参考手册页。

我们的示例文件非常小,但是有时候有大型文件需要分割为比较小的块。例如,可能希望将大文件分割为 CD 容量的块,以便将它写到 CD 中。split 命令会完成这个任务,可以使用 cat 命令轻松地重新创建文件。在默认情况下,split 命令产生的文件的名称前面有前缀 'x',后面有后缀 'aa''ab''ac'...'ba''bb' 等等。可以用选项控制这些默认前缀和后缀。还可以控制输出文件的大小,以及产生的文件是包含整行,还是只按字节计数。清单 26 演示将我们的两个文本文件进行分割,输出文件具有不同的前缀。我们将 text1 分割为最多包含两行的文件,将 text2 分割为最多包含 18 字节的文件。然后使用 cat 单独显示一些片段,并使用 globbing 显示完整的文件,这在本教程后面的 通配符和 globbing 一节中讨论。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论

分页:[1] 2 3 4
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·LPI 101认证学习11-GNU和UNIX命令之在命令行上进行操作  (2006-11-21 14:13:42)
 ·LPI 101认证学习10-Linux安装与包管理之RPM包管理  (2006-11-20 13:28:50)
 · LPI 101认证学习9-Linux安装与包管理之Debian 包管理  (2006-11-17 15:36:46)
 ·LPI 101认证学习8-Linux安装与包管理之管理共享库  (2006-11-16 15:00:44)
 · LPI 101认证学习7-Linux安装与包管理之构建和安装程序  (2006-11-15 20:55:48)
 ·LPI 101认证学习6-Linux安装与包管理之安装引导管理程序  (2006-11-14 15:01:51)
 ·LPI 101认证学习5-Linux安装与包管理之硬盘布局  (2006-11-13 15:44:28)
 ·LPI 101认证学习4-硬件和体系结构之PC扩展卡,通信设备和USB设备  (2006-11-12 13:39:26)
 ·LPI 101认证学习3-硬件和体系结构之设置 SCSI 设备  (2006-11-11 13:44:55)
 ·LPI 101认证学习2-硬件和体系结构之调治解调器和声卡  (2006-11-10 13:47:00)