首页计算机计算机软件Unix&Linux教程 17 第17章 过滤器:比较和抽取.pptx

17 第17章 过滤器:比较和抽取.pptx

页数:34页文件大小:112.0 KB来源: Unix&Linux教程ppt课件

本课件讲解文件比较与数据抽取:cmp、comm与diff三种比较工具的适用场景、diff的常用选项与三种输出格式、差分与补丁,以及cut按字符或字段抽取数据、paste组合数据列的方法。

第17章过滤器:比较和抽取封面,标示本章讲解的cmp、comm、diff比较与cut、paste抽取组合
本章需要解决的几个问题要点讲解,涵盖Unix中有10个用于比较文、diff、对于一个大的文本文件等
17.1文件数据操作汇总说明页,10个比较、排序及抽取数据的程序:文件数量文件类型作用过滤器2二进制、文本比较两个文件cmp2有序文本比较两个有序文件,
查看本课件的文字版(共 34 页,供检索与复制)

第1页:第17章过滤器:比较和抽取

本页为第17章过滤器:比较和抽取的章节封面,标示本章讲解的cmp、comm、diff比较与cut、paste抽取组合。

第2页:本章需要解决的几个问题

  • Unix中有10个用于比较文件、排序文件、从文件中抽取数据的重要程序,分别是什么?为什么有这么多?
  • diff和sdiff有什么区别?
  • 对于一个大的文本文件,使用哪些程序进行如下数据选取操作:a)重复行;b)唯一行;c)包含特定模式的行;d)以特定模式开头的行;e)数据列。

第3页:17.1文件数据操作汇总

  • 10个比较、排序及抽取数据的程序:文件数量文件类型作用过滤器2二进制、文本比较两个文件cmp2有序文本比较两个有序文件,显示区别comn2文本比较两个文件,显示区别diff2文本比较两个文件,显示区别sdiff1..n文本从数据中抽取指定列cut

第4页:17.1文件数据操作汇总:10个比较

  • 10个比较、排序及抽取数据的程序:文件数量文件类型作用过滤器1..n文本组合数据列paste1..n文本排序数据sort1有序文本选取重复/唯一列uniq1..n文本选取包含指定模式的行grep1有序文本选取以指定模式开头的行look

第5页:17.2比较任意两个文件:cmp

  • 功能特征:按字节比较两个文件。例如:$ cmp data data-backupdata data-backup differ: byte 3, line 4
  • 语法定义:cmpfile1 file2

第6页:17.3比较有序文本文件:comm

语法定义
comm[-123]file1 file2
功能特征
按行比较两个有序文本文件。

第7页:17.3比较有序文本文件:comm

  • 例子:两个文件frick和frackAlisonBarbaraBenChunkNoahAlisonBarbaraCandyChunkNoahSuefrickfrack

第8页:17.3比较有序文本文件:comm

  • 例子:两个文件frick和frack$ comm frick frackAlisonBarbaraBenCandyChuckNoahSue分别使用-1-2-3选项,可以抑制1、2或3列的输出

第9页:17.4比较无序文本文件:diff

语法定义
diff[-bBiqswy] [-c|-Clines|-u|-Ulines]file1 file2
功能特征
按行比较两个文本文件。

第10页:17.4比较无序文本文件:diff

  • 例子1:两个文件old-names和new-names$ diff old-names new-names3c3< Paig---> PaigeGeneWillPaigMarkGeneWillPaigeMarkold-namesnew-names含义:左边文件的第3行修改为右边文件的第3行。单字符指示。可以有3个:c:changed:deletea:append指示文件方向

第11页:17.4比较无序文本文件:diff:2

  • 例子2:两个文件old-names和new-names$ diff old-names new-names1a2> WillGenePaigeMarkGeneWillPaigeMarkold-namesnew-names含义:左边文件的第1行后面追加右边文件的第2行。

第12页:17.4比较无序文本文件:diff:3

  • 例子3:两个文件old-names和new-names$ diff old-names new-names4d3< MarkGeneWillPaigeMarkGeneWillPaigeold-namesnew-names含义:删除左边文件的第4行。通常忽略d后面的数字

第13页:17.5 diff的选项

-i
忽略大小写例如:bit和BIT是相同的
-w
忽略所有的空白符例如:xx和x x是相同的
-b
忽略空白符数量上的差别例如:x x和x x是相同的,但和xx不同

第14页:17.5 diff的选项:-B

  • -q:当两个文件不同时,省略所有细节例如:$ diff-q frick frackFiles frick and frack differ
  • -B:忽略所有的空白行

第15页:17.5 diff的选项:-s

  • -s:当两个文件相同时,进行提示例如:假定文件f1和f2相同$ diff-s f1 f2Files f1 and f2 are identical

第16页:17.6比较文件时的输出格式

  • 生成更易阅读的diff结果-1.使用-c选项例子:AlbaDeePat D.PhilAlbaDeeMickPat D.smartrich

第17页:$ diff:smart示例

$ diff命令示例:

-c smart rich***smart 2009-02-14 15:33:50.000000000-0700---rich 2009-02-14 15:34:04.000000000-0700****************** 1, 4 ****AlbaDeePat D.-Phil*** 1, 4 ****AlbaDee+MickPat D.

第18页:比较文件时的输出格式

  • 生成更易阅读的diff结果-2.使用-u选项例子:AlbaDeePat D.PhilAlbaDeeMickPat D.smartrich

第19页:$ diff:usmart示例

$ diff命令示例:

-usmart rich***smart 2009-02-14 15:33:50.000000000-0700---rich 2009-02-14 15:34:04.000000000-0700@@-1, 4 +1,4@@AlbaDee+MickPat D.-Phil

第20页:比较文件时的输出格式

  • 生成更易阅读的diff结果-3.使用-y选项例子:AlbaDeePat D.PhilAlbaDeeMickPat D.smartrich

第21页:$ diff:ysmart示例

$ diff命令示例:

-ysmart richAlbaAlbaDeeDee>MickPat D.Pat D.Phil<$ sdiff smart richAlbaAlbaDeeDee>MickPat D.Pat D.Phil<

第22页:比较文件时的输出格式:sdiff语法定义

  • sdiff语法定义:sdiff[-bBilsW] [-wcolumn]file1 file2其中:-l:当两个文件有相同行时,只显示左边的列-s:不显示相同行-wcolumn:改变列的宽度-b:忽略空白符数量-B:忽略空白行-i:忽略大小写-W:忽略空白符

第23页:17.7差分和补丁

  • 差分将一个文件转换成另一个文件的一串指示称为一个差分(diff)。
  • 应用差分使用差分,以一个文件创建另外一个文件,称为应用了差分。用来应用差分的程序称为patch。

第24页:17.7差分和补丁:分发程序变化当程序员

  • 分发程序变化当程序员使用差分来发布新版本时,通常将差分称为补丁(patch)。

第25页:17.8抽取数据列:cut

语法定义
cut-clist[file…]其中:list:要抽取列的列表file:输入文件的名称

第26页:17.8抽取数据列:cut

  • 例子:有文件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

第27页:17.8抽取数据列:cut示例

17.8抽取数据列:cut命令示例:

$cut-c 12-17 studentMikeBartonCandyJordanDanielBattie$cut-c 1-11 19-20 student201153200195201153200264201153200375201153200482201153200588201153200689

第28页:17.9抽取数据字段示意图

本页为课件示意图,配合图形说明17.9抽取数据字段小节的结构与流程。

第29页:17.9抽取数据字段示意图

本页为课件示意图,配合图形说明17.9抽取数据字段小节的结构与流程。

第30页:抽取数据字段:cut的另一个功能就

  • cut的另一个功能就是可以从使用定界符分隔数据的文件中抽取数据字段。cut-flist[-ddelimiter] [-s][file…]其中:list:要抽取字段的列表delimiter:定界符file:目标文件

第31页:17.9抽取数据字段:cut示例

17.9抽取数据字段命令示例:

$cut-f 2-d ‘,’ studentMikeBartonCandyJordanDanielBattie$cut-f 1,3-d ‘,’ student201153200195201153200264201153200375201153200482201153200588201153200689

第32页:17.10组合数据列:paste

语法定义
paste[-dchar][file…]其中:char:分隔符file:输入文件的名称

第33页:17.10组合数据列:paste

  • 例子:有三个文件要求组合成一个CVS文件stu.cvs,包含ID、姓名、生日和电话字段ID001ZhangID002WangID003LiID004ZhaonameID0016601ID0026602ID0036603ID0046604phoneID00101/01/85ID00202/02/86ID00303/03/87ID00404/04/88birthday

第34页:17.10组合数据列:paste示例

17.10组合数据列:paste命令示例:

$paste-d ‘;’ name birthday phone > tmp.cvs$$cut-f 1,2,4,6-d ‘;’ > stu.cvs$$cat stu.cvsID001;Zhang;0001;01/01/85ID002;Wang;0002;02/02/86ID003;Li;0003;03/03/87ID004;Zhao;0004;04/04/88
顶部目录