资源描述
第2章 基本UNIX实用程序,第2章 第2页,基本实用程序,主要是一些文本文件的处理程序 例:more,cat,sort,grep 举例 sort sort file1 file2,第2章 第3页,实用程序的特点,特点 不指定文件名时,从标准输入获得数据 指定文件名时,从文件中获取数据 可以同时指定多个文件 处理结果在标准输出显示 考虑的因素 标准输入/标准输出 shell的文件通配符 输入输出重定向 管道,第2章 第4页,more/pg/less:逐屏显示文件,历史 more:最先由BSD UNIX开发 pg:最先由AT 4: ,第2章 第37页,awk举例(2),$ date Thu May 27 22:02:22 BEIDT 2004 $ date | awk print $4 22:02:42 $ who zhang ttylb Sep 29 11:20 liang ttyla Sep 29 11:53 zhang ttylf Sep 29 12:04 feng tty1c Sep 29 12:54 $ who | awk / *zhang / printf(%s , $2) tty1b tty1f $ $ ls -s | awk $1 2000 print $2 disk.img document.pdf linux-src.tar.Z pppd.log $,第2章 第38页,awk举例(3),根据WireShark捕获文本,tcp发送窗口的计算 5 0.189495 192.168.0.108 123.117.178.136 TCP 2299 21 ACK /0-9.0-90-90-90-90-90-9 / t = $2 Transmission Control Protocol, Src Port: 20 (20), Dst Port: 2301 (2301), Seq: 1, Ack: 15570646, Len: 0 /20 (20).* 2301 (2301)/ ack = $15 Transmission Control Protocol, Src Port: 2301 (2301), Dst Port: 20 (20), Seq: 15615286, Ack: 1, Len: 1440 /2301 (2301).* 20 (20)/ if ($13 - ack != w) w = $13 - ack; printf(%s %dn, t, w); 文本文件的每行都是一个整数,计算累加和,第2章 第39页,tr:翻译字符,用法 tr string1 string2 把stdin拷贝到stdout,string1中出现的字符替换为string2中的对应字符 例 cat telnos | tr UVX uvx 例:用指定一个集合 cat report | tr a-z A-Z 将小写字母改为大写字母 例:用加三个八进制数字(类似C语言)表示一字符 cat file1 | tr % 012 将%改为换行符 注意不要漏掉必需的单引号,第2章 第40页,两文件逐字节比较:cmp,用法 cmp file1 file2 功能 逐字节比较两个文件是否完全相同 两个文件完全相同时,不给出任何提示 两个文件不同时,打印出第一个不同之处 在Windows中有类似的命令COMP,第2章 第41页,文件内容比较:md5sum,使用MD5算法(散列函数)根据文件内容生成16字节hash值,比较hash值是否相同,就可断定两文件内容是否完全相同 使用SHA-1算法的命令名为sha1sum(20字节hash值) 常用于比较位于网络不同机器上的两个文件内容,$ md5sum src.tar proto.txt b9d2d3705ca4f3064f525fa1c137fe76 src.tar 610232c1bf24929b69e9621eec4a23e8 proto.txt $ md5sum src.tar proto.txt files.md5sum,$ md5sum -c files.md5sum src.tar: OK proto.txt: OK,仅将files.md5sum传送到另台计算机,在另台计算机上运行程序,比较同名文件的内容是否一致,失误率 MD5: 2-128 =3.410-38 SHA-1: 2-160 =4.710-50,第2章 第42页,求出两个文件的差别:diff,用法 diff file1 file2 功能 比较两个版本的源程序文件,以寻找两者间差别 Windows下类似功能的FC命令(File Comparison) ,常用/N选项,列出时打印行号 发现不同,就列出一个如何将file1转化为file2的指令 这些指令有a(Add),c(Change)和d(Delete) 指令字母左边的行号是file1的行号,右面是file2的行号 列出内容时,大于号后边的内容是需要在file1文件中增加的内容;小于号后边的内容是需从file1中删除的内容,第2章 第43页,cmp和diff举例,$ cmp f1.c f2.c f1.c f2.c differ: char 69, line 3 $ diff f1.c f2.c 3,5d2 vm_mm = mm; map_count+; vm_next = NULL; 260c257 i = i * 8 * sizeof(long); 528c525 swappable = 1; - p-swappable = 0; 548a546,547 retval = p-pid; p-tgid = retval;,第2章 第44页,由命令diff产生的文件转化指令,第2章 第45页,diff命令常用的选项,-b 逐行比较两个文件时忽略每行结尾处的多余空格 -e 为UNIX的行编辑程序ed生成脚本文件。ed命令使用这个脚本文件编辑file1文件,就可以变成文件file2,第2章 第46页,patch命令及CVS,patch 命令 读取由 diff 命令产生的差异列表(补丁文件),然后将源目录树中的文件组更改为新文件,一般应用于源码等文本文件 CVS (Concurrent Versions System) 对一个目录树(项目)下的文本文件进行版本管理 便于多人合作开发的项目(一个代码库,多个现场) 可以通过网络访问代码库,stud和jiang用户建立了lynx项目组,代码库/opt/codebase cvs checkout lynx 从代码库签出lynx项目的代码和文档树 cvs add xxxyyy.c 增加文件或目录 cvs remove xxxyyy.c 删除文件 cvs commit 提交代码 cvs update 更新代码 cvs tag -b rel-tj 设置库中代码的一个版本快照 cvs diff -r HEAD 比较代码差异(HAED指当前库中版本),第2章 第47页,复习(1),UNIX文本文件的使用 基本实用程序的处理对象 基本实用程序的特点以及原因 more、less逐屏显示文件:行滑动,屏幕翻页,退出 cat:列出文件内容 od:16进制打印文件字节码 head tail tail的-f选项 wc,字计数与行计数 sort tee的用途,正则表达式的用途(匹配与替换) 正则表达式规则 正则表达式的应用 grep基本正则表达式 egrep扩展的正则表达式 fgrep字符串匹配(KMP算法?) UNIX命令的界面风格 sed流编辑 正则表达式替换 awk文本文件处理语言 awk的变量 awk的条件(数值范围,正则表达式匹配) awk的动作(函数,变量,条件),第2章 第48页,复习(2),tr翻译字符(字符转换) cmp文件字节码比较 md5sum求出或验证文件MD5值 diff文本文件差异 解读diff的输出信息 patch 源代码管理系统的功能 CVS,Subversion,git,
展开阅读全文