Linux中文本过滤器,学习 Linux,101 文本流和过滤器.doc

学习 Linux,101 文本流和过滤器

学习 Linux,101: 文本流和过滤器使用 GNU 文本实用程序在命令行操作文本

级别: 中级

Ian Shields, 高级程序员, IBM

2009 年 9 月 21 日

文本操作不仅仅是指复制和粘帖,在不使用 GUI 的情况下,这一点尤其明显。通过本文为 Linux Professional Institute Certification (LPIC) 101 考试做准备,或者仅仅是从中得到乐趣。在这篇文章中,Ian Shields 向您介绍了在 Linux? 上使用 GNU 文本实用程序(textutils)包中的过滤器进行文本操作。在阅读完本文后,您将能够像专家一样熟练地操作文本。

概述

本文提供了对过滤器(filter)的介绍,您将使用过滤器构建复杂的管道(pipeline)来操作文本。您将学习如何显示文本、执行排序、计算单词和行数、转换字符,以及其他任务。您还将了解到如何使用流编辑器 sed。

在本文中,您将了解以下主题:

通过文本实用过滤器发送文本文件和输出流,以修改输出

使用 GNU 文本实用程序包提供的标准 UNIX 命令

使用编辑器 sed 编写脚本,对文本文件做出复杂的修改

本文帮助您准备 Junior Level Administration (LPIC-1) 考试 101 中主题 103 下的目标 103.2。该目标的权值为 3。本文的内容与 2009 年 4 月的 考试 101 目标 相对应。您应当始终参考这些目标,获得明确的考试要求。

文本过滤

文本过滤指的是这样一个过程:获得文本的输入流,并在将文本发送给输出流之前对文本执行一些转换。尽管输入或输出都可以来自某个文件,但是在 Linux 和 UNIX? 环境中,实现过滤的最常见方法是构建一个命令管道,其中来自一个命令的输出被传输 或重定向 以用作下一个命令的输入。关于管道和重定向的内容,我们将在有关流、管道和重定向 的文章中更详细地介绍(可以在 学习 Linux,101:LPIC-1 路线图 中找到),不过现在先让我们看看使用 | 和 > 操作实现管道和基本的输出重定向。

流 只不过是一个可以使用库功能读取或写入的字节序列,库功能向应用程序隐藏了底层设备的细节。通过使用流,相同的程序可以使用独立于设备的方式从终端、文件或网络 socket 中读取,或向其中写入。现代编程环境和 shell 使用三种标准的 I/O 流:

stdin 是标准输入流,为命令提供输入。

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

stderr 是标准错误流,显示命令中的错误输出。

使用 | 实现管道

输入可以来自您为命令提供的参数,输出可以显示到您的终端上。许多文本处理命令(过滤器)可以从标准输入流或从文件中获取输入。要将命令 command1 的输出作为过滤器 command2 的输入,您需要使用管道操作符 (|) 连接两个命令。清单 1 展示了如何传输 echo 的输出,以对一个小的单词列表进行分类。

清单 1. 将 echo 的输出传输到 sort 的输入

[ian@echidna ~]$ echo -e "apple\npear\nbanana"|sort

apple

banana

pear

任何命令都包含选项或属性。您还可以使用 | 将管道中第二个命令的输出重定向到第三个命令,依此类推。在 Linux 和 UNIX 中,一种常见的执行任务的方式就是构建一个长的命令管道,每个命令只具备有限的功能。您有时会看到使用一个连字符 (-) 来代替文件名作为命令的参数,这意味着输入应当来自 stdin 而不是文件。

使用 > 重定向输出

创建由若干命令组成的管道并在终端观察输出固然不错,然而有些情况下您需要将输出保存到文件中。可以通过输出重定向操作符 (>) 实现这一点。

在本节后面的内容中,我们将使用一些小型文件,因此让我们创建一个名为 lpi103-2 的目录并通过 cd 进入到该目录。随后使用 > 将 echo 命令的输出重定向到名为 text1 的文件。清单 2 展示了整个过程。注意,输出并没有显示在终端上,因为它被重定向到了文件中。

启动 2. 将命令输出重定向到文件

[ian@echidna ~]$ mkdir lpi103-2

[ian@echidna ~]$ cd lpi103-2

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

现在,我们具备了一些基本的工具来实现管道和重定向,让我们研究一些常见的 UNIX 和 Linux 文本处理命令和过滤器。本节将展示一些基本的功能;查看对应的手册页来获得

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值