第1页:第16章过滤器:简介和基本操作
本页为第16章过滤器:简介和基本操作的章节封面,标示本章讲解的过滤器概念、cat与文件的组合分割。
第2页:本章需要解决的几个问题
- 什么是过滤器?
- 组合使用过滤器和管道,需要几个步骤?
- 最简单的过滤器是什么?
- tac和rev之间有什么区别?
第3页:15.2过滤器
- 定义:-能挂接在管道上的程序称为过滤器。-例如:cat f1 f2 f3 | sort | less这里sort、less都是过滤器。
第4页:15.5最简单的过滤器:cat
- cat的功能:-将标准输入的数据复制到标准输出。-例如:$ catthis is line 1<Return>this is line 1<Return>^D
第5页:最简单的过滤器:cat:cat的应用
- cat的应用:-1.与重定向组合,快速创建一个小文件。-例如:$ cat datathis is line 1<Return>^D
第6页:最简单的过滤器:cat:cat的应用
- cat的应用:-2.在已有文件中追加少数几行内容。-例如:$ cat >> data<Return>this is append line <Return>^D
第7页:最简单的过滤器:cat:cat的应用
- cat的应用:-3.显示一个短文件的内容。-例如:$ cat < datathis is line 1this is append line^D
第8页:最简单的过滤器:cat:cat的应用
- cat的应用:-4.显示任何文件的最后一部分。-例如:$ cat < /etc/profile可以对比使用$ tail /etc/profile
第9页:最简单的过滤器:cat:cat的应用
- cat的应用:-5.通过重定向标准输入和输出复制文件。-例如:$ cat < data > newdata可以对比使用$ cp data newdata
第10页:15.6增强过滤器的功能
- 有效的改进
- -允许指定一个或多个输入文件名。-例如:读取文件内容$ cat < data改进为$ cat data
第11页:15.6增强过滤器的功能:有效的改进
- 有效的改进:-cat改进之后的语法cat[filename…]-例如:$ cat f1 f2 f3 | sort | less
第12页:增强过滤器的功能:cat改进的得失-1
- cat改进的得失-1.可以通过管道,使得其它命令可以从多个文件获取内容。-2.失去了Unix总体设计的某些精美性,实用战胜了理想。cat的改进至少可以保持其它过滤器的纯洁性。-事实上,大多数过滤器并不考虑cat的感受,它们都允许多个文件名作为参数,例如:sort f1 f2 f3 | less
第13页:常用过滤器列表(一)
常用过滤器列表(一):作用与过滤器命令:下表列出课件中的对应条目。
常用过滤器列表(一):作用与过滤器命令| 作用 | 过滤器 |
|---|
| Perl编程语言:操作文本 | awk |
|---|
| 组合文件;复制标准输入到标准输出 | cat |
|---|
| 删除指定的数据列 | colrm |
|---|
| 比较两个有序文件,显示区别 | comm |
|---|
| 比较两个文件 | cmp |
|---|
| 从数据中抽取指定列 | cut |
|---|
| 比较两个文件,显示不同 | diff |
|---|
第14页:常用过滤器列表(二)
常用过滤器列表(二):作用与过滤器命令:下表列出课件中的对应条目。
常用过滤器列表(二):作用与过滤器命令| 作用 | 过滤器 |
|---|
| 将制表符转换为空格 | expand |
|---|
| 将长行格式化成较短的行 | fold |
|---|
| 格式化段落 | fmt |
|---|
| 选择包含指定模式的行 | grep |
|---|
| 从数据的开头选择行 | head |
|---|
| 基于公用字段组合数据列 | join |
|---|
| 选择以指定模式开头的行 | look |
|---|
第15页:常用过滤器列表(三)
常用过滤器列表(三):作用与过滤器命令:下表列出课件中的对应条目。
常用过滤器列表(三):作用与过滤器命令| 作用 | 过滤器 |
|---|
| 创建行号 | nl |
|---|
| 组合数据列 | paste |
|---|
| 编程语言 | perl |
|---|
| 将文本格式化为页或者列 | pr |
|---|
| 每行数据中的字符反序排列 | rev |
|---|
| 比较两个文件,显示区别 | sdiff |
|---|
| 非交互式文本编辑 | sed |
|---|
第16页:常用过滤器列表(四)
常用过滤器列表(四):作用与过滤器命令:下表列出课件中的对应条目。
常用过滤器列表(四):作用与过滤器命令| 作用 | 过滤器 |
|---|
| 排序数据;检查数据是否有序 | sort |
|---|
| 将大文件分割成较小的文件 | split |
|---|
| 在二进制文件中搜索字符串 | strings |
|---|
| 组合文件,同时将文本行的顺序反转 | tac |
|---|
| 从数据的末尾选择行 | tail |
|---|
| 改变或删除选定的字符 | tr |
|---|
| 根据偏序创建全序 | tsort |
|---|
第17页:常用过滤器列表(五)
常用过滤器列表(五):作用与过滤器命令:下表列出课件中的对应条目。
常用过滤器列表(五):作用与过滤器命令| 作用 | 过滤器 |
|---|
| 将空格转变成制表符 | unexpand |
|---|
| 选择重复或唯一行 | uniq |
|---|
| 统计行数、单词数和字符数 | wc |
|---|
第18页:15.8组合文件:cat
- 语法定义:cat[-bns] [filename…]-n:在每行前面加一个行号-b:和-n一起使用,告诉cat不要对空白行编号-s:将多个连续空白行挤压为一个空白行
- 相关过滤器:split、tac、rec
第19页:15.9分割文件:split
- 语法定义:split[-d] [-anum] [-llines] [file[prefix]]-d:创建文件名时用数字作为后缀;num:创建文件名时用作文件名后缀的字符或数字数量;lines:每个新文件所包含的最大行数;file:输入文件的名称;prefix:创建文件名时所用的名称
第20页:15.9分割文件:split:使用解释
- 使用解释:$ split data执行效果分析(1)假定data文件长度为57984行,默认创建57个1000行的文件和1个984行的文件(2)可以通过使用-llines重新设定分割后文件的最大行数:split-l 5000 data
第21页:15.9分割文件:split:使用解释
- 使用解释:$ split data执行效果分析(3)新生成文件的文件名以x开头,后面跟两个字符的后缀:xaa xab … xaz xba xbb … xbz xca xcbxcc xcd
第22页:15.9分割文件:split:使用解释
- 使用解释:$split data执行效果分析(4)如果不喜欢这种字母组合,可以通过-d选项,使用数字组合:split-d datax00 x01 x02 … x57
第23页:15.9分割文件:split:使用解释
- 使用解释:$ split data执行效果分析(4)如果不希望文件以x开头,可以通过prefix参数来指定新文件名的前缀。split-d data datadata01 data02 … data57
第24页:15.9分割文件:split:使用解释
- 使用解释:$ split data执行效果分析(5)两个字符的组合有26*26=676种,而两个数字的组合只有100种,如果分割后的文件超过100个,可以使用-a选项指定后缀中数字的数量:split-d–a 3 data,分割后的文件名为:x001 x002 … x057
第25页:组合文件时反转文本行的顺序:tac
- 语法定义
- tac[file…]
- 功能描述
- 组合文本文件,将其写入到标准输出之前先将文本的顺序反转。
- 相关过滤器
- cat、rev
第26页:15.11反转字符的顺序:rev
- 语法定义
- rev[file…]
- 功能描述
- 将文件中各行的字符的顺序反转。
- 相关过滤器
- cat、rev
第27页:反转字符的顺序:rev
- 15.12从数据开头或末尾进行数据选择:head、tail
- 语法定义:head[-nlines…]tail[-nlines…]其中:lines是希望选取的数据的行数lines的默认值是10如:cat f1 f2 f3 | sort | head-20
第28页:15.13删除数据列:colrm
- 语法定义:colrm[startcol[endcol]]其中:startcol是希望删除的数据的开始列endcol是希望删除的数据的结束列
- 相关过滤器:cut、paste
第29页:15.13删除数据列:colrm
- 例子:有文件student,内容如下2011532001<Tab>Mike <Tab>952011532002<Tab>Barton<Tab>642011532003<Tab>Canby <Tab>752011532004<Tab>Jordan<Tab>822011532005<Tab>Daniel<Tab>882011532006<Tab>Battie<Tab>89如何删除姓名列?
第30页:15.13删除数据列:colrm:步骤
- 步骤
- 1.确定需要删除的列范围:11-172. colrm 11 17 < student