《基本UNIX实用程序.ppt》由会员分享,可在线阅读,更多相关《基本UNIX实用程序.ppt(48页珍藏版)》请在三一办公上搜索。
1、第2章 第1页,第2章 基本UNIX实用程序,第2章 第2页,基本实用程序,主要是一些文本文件的处理程序例:more,cat,sort,grep举例sortsort file1 file2,第2章 第3页,实用程序的特点,特点不指定文件名时,从标准输入获得数据指定文件名时,从文件中获取数据可以同时指定多个文件处理结果在标准输出显示考虑的因素标准输入/标准输出shell的文件通配符输入输出重定向管道,第2章 第4页,more/pg/less:逐屏显示文件,历史more:最先由BSD UNIX开发pg:最先由AT&T UNIX开发less:Linux上广泛使用使用方法more server.c 指
2、定一个文件more*.ch 指定多个文件ls-l|more 指定0个文件pg*.ch less a.c,第2章 第5页,more,满屏后,显示-more-或-more-(15%),可以使用more命令:,第2章 第6页,pg,显示满屏后,屏幕最后一行为冒号(:)提示符,显示暂停pg的每个命令后要按回车键,第2章 第7页,more与pg,more比pg少按键,pg的每个命令要比more多按回车键man命令使用more,pg或者lessSystem V一般默认pg为man的分屏浏览器系统管理员可以自行设定more命令还有许多扩展功能可以后退回去浏览那些已经浏览过的页不同系统扩展功能会有些差距。ls
3、 l|more 比more server.c回退浏览功能受到限制more命令比Windows系统中的同名命令的功能强得多,第2章 第8页,less,LINUX系统中的命令less回退浏览的功能更强可直接使键盘的上下箭头键,或者j,k,类似vi的光标定位键,以及PgUp,PgDn,或者Ctrl-F,Ctrl-B,Home,End键许多系统不提供less命令,但是可利用more命令的增强功能,第2章 第9页,cat与od:列出文件内容,基本功能与命名cat concatenate:串结,文本格式打印od octal dump逐字节打印(-c,-t x1选项)举例cat tryl.c 命令行参数1个
4、cat tryl.c tryx.c try.h 命令行参数3个cat try 命令行参数=0个,从stdin获取数据,直到ctrl-dcat tryl.c try2.c try.h trysrccat makefile*.ch srcod t x1 x.dat 以十六进制打印文件x.dat各字节od t x1 x.dat|more 以十六进制打印文件x.dat各字节od c bash 逐字符方式打印文件,遇到不可打印字符打印编码echo abcdABCD|od t x1 十六进制显示字符的ASCII码,第2章 第10页,head与tail,head-15 ab.c 显示文件ab.c中前15行h
5、ead-23 a.c b.c c.c|more 显示三个文件各自的前23行共显示69行tail-10 liu.mailtail-f debug.txt 实时打印文件尾部被追加的内容(选项-f:forever)netstat-s-p tcp|head-14ls-s|sort|head-10,第2章 第11页,wc:字计数(word count),功能列出文件中一共有多少行,有多少个单词,多少字符当指定的文件数大于1时,最后还列出一个合计常用选项-l:只列出行计数举例wc sum.c(1个文件)wc x.c makefile stat.sh(多个文件)wc-l*.c makefile start.
6、shps-ef|wc-l(0个)ps-ef|grep liang|wc-l(0个)who|wc-l(0个),第2章 第12页,sort:对文件内容排序,sort选项可以选择行中某一部分作为排序关键字选择升序或降序取消相同内容的行字符串比较时对字母是否区分大小写-n选项(Numberic),对于数字按照算术值大小排序,而不是按照字符串比较规则举例sort telno telno1ls-s|sort|tail 10ls-s|sort-n|tail 10,第2章 第13页,tee:三通,功能将从标准输入stdin得到的数据抄送到标准输出stdout显示,同时存入磁盘文件中 应用举例./myap|te
7、e myap.log,第2章 第14页,正则表达式的概念,正则表达式Regular Expressions应用范围字符串匹配操作和替换操作举例:UNIX中的vi more pg grep yacc lex awk其他:Turbo Pascal/Visual C/Word等等正则表达式的功能描述一个字符串模式注意正则表达式规则与文件名通配符规则不同正则表达式规则用于文本处理的场合文件名匹配规则用于文件处理的场合不同软件对正则表达式的定义可能会有些不同,第2章 第15页,正则表达式的特殊字符(元字符),6个元字符.*$其它字符与其自身匹配转义用反斜线可以取消特殊字符的特殊含义。如:正则表达end.
8、只与字符串end.匹配,第2章 第16页,单字符正则表达式,长的正则表达式由单字符正则表达式构成的非特殊字符与其自身匹配 如:a与a,b与b转义字符().*$圆点()匹配任意单字符,第2章 第17页,单字符正则表达式:定义集合(1),基本用法在一对方括号之间的字符为集合的内容,如:单字符正则表达式abcd与a或b,c,d匹配圆点,星号,反斜线在方括号内时,代表它们自己如:*.可匹配3个单字符,第2章 第18页,单字符正则表达式:定义集合(2),用减号-定义一个区间如a-d A-Z a-zA-Z0-9减号在最后,则失去表示区间的意义ad-只与3个字符匹配用表示补集在开头,则表示与集合内字符之外的
9、任意字符匹配如:a-z匹配任一非小写字母不在开头,则失去其表示补集的意义如:a-z能匹配27个单字符,第2章 第19页,单字符正则表达式的组合(1),串结如abc,A-Z.0-9星号(*)单字符正则表达式后跟*,匹配此单字符正则表达式的0次或任意多次出现例:正则表达式12*4与字符串1234不匹配,与1224,12224,14匹配例:正则表达式A-Z0-9*此例中*作用的单字符正则表式为0-9,代表 A-Z A-Z0-9 A-Z0-90-9 A-Z0-90-90-9,等等与A,A1,C45,D768匹配,与b64512,T56t不匹配,第2章 第20页,单字符正则表达式的组合(2),例:正则表
10、达式Cchapter*1-4在*号前有一个空格,允许数字1-4之前有多个或者0个空格。可匹配Chapter2,chapter 3等等。例:正则表达式ai*=*bj*ck匹配字符串ai=bj*ck,容许等号和星号两侧有空格,第2章 第21页,正则表达式:$与,$在尾部时有特殊意义,否则与其自身匹配例:123$匹配文件中行尾的123,不在行尾的123字符不匹配例:$123与字符串$123匹配 例:.$匹配行尾的任意字符 在首部时有特殊意义,否则与其自身匹配 例:printf匹配行首的printf字符串,不在行首的printf串不匹配例:Hello与字符串Hello匹配例:在vi中使用:10,50s
11、/g 删除10-50行的每行行首的4个空格,第2章 第22页,grep在文件中查找字符串,命名 grep(Global regular expression print)语法 grep 模式 文件名列表举例grep O_RDWR*.hps-ef|grep liangwho|grep liangls-l/|grep d|wc lgrep 0-9*chapter1grep 0-90-9*chapter1,第2章 第23页,egrep在文件中查找字符串(1),特点:用扩展的正则表达式描述模式圆括号():表示分组表示逻辑或的符号|与星号地位类似的+和?*号表示它左边的单字符正则表达式的0次或多次重复+
12、号表示1次或多次?表示0次或一次与星号地位类似,限定重复次数 m,n例如:1-90-96,8 7-9位数字,首位非0模式举例(xy)*可匹配空字符串,xy,xyxy,xyxyxy(pink|green)与pink或green匹配0-9+不匹配空字符串,匹配长度至少为1数字串a?匹配零个或一个a,第2章 第24页,egrep在文件中查找字符串(2),命令举例egrep(SEEK_|IPC_)*.hegrep 0-9:0-90-9(client|server)$egrep 0-9+chapter1,第2章 第25页,grep/egrep/fgrep,egrep在指定模式方面比grep更灵活,但算法
13、需要更多的处理时间 fgrep:快速grep按字符串搜索而不是按模式搜索。fgrep运算速度快,适合于从大量的数据中进行检索指定字符串,不可按模式查找,第2章 第26页,grep/fgrep/egrep选项,选项-n 显示时每行前面显示行号-v 显示所有不包含模式的行-i 字母比较时忽略字母的大小写例:grep-n _DATE_*.c查找含有正则表达式_DATE_的行,并打印行号当文件数超过一个时,除了输出行号,还输出文件名例:grep-v Ddisable dev.statdev.active取消文件中所有含有指定模式的行,生成新文件例:grep-i richard telnos在文件中检索
14、字符串richard,不顾字母的大小写,第2章 第27页,UNIX命令界面风格(1),UNIX的grep命令共有十几个选项,选项以减号开头丰富的选项,为命令提供了丰富的功能选择命令行参数提供处理对象及命令选项程序开始运行后,不再需要任何其它的交互式输入交互式命令界面输入grep命令,按下回车键程序开始执行。程序提示:“输入待查找的模式:”,等待用户输入。问:“显示时每行前加行号吗?”,等待输入Y或者N问:“模式匹配时忽略英文字母的大小写吗?”,等待输入问题都回答完后,提示“请输入文件名:”,等待输入处理结束后,再问:“还需要查找其它的文件吗?”,第2章 第28页,UNIX命令界面风格(2),两
15、种界面风格的比较交互式问答,界面非常友好,简单易用可以改进上面的问答,组织成菜单的形式,用户选择设置一些必要的开关当系统变得非常复杂时,使用命令方式更有效交互式输入不便于把命令用于批处理程序,文件名通配符,重定向和管道功能与其它的命令协同工作图形界面和命令行界面,第2章 第29页,sed:流编辑,用法sed 命令 文件名列表sed-f 命令文件 文件名列表例tail-f pppd.log|sed s/145.37.23.26/QiaoXi/gtail-f pppd.log|sed-f sed.cmd其中 sed.cmd 文件s/145.37.23.26/QiaoXi/gs/102.157.23
16、.109/LiuYin/g s/145.37.123.57/DaTun/g,第2章 第30页,sed:正则表达式替换,模式描述中增加(和)在正则表达式中圆括号,仍然代表它自身在正则表达式中出现的(和)不影响匹配操作例a-zA-Z_a-zA-Z0-9_*-number(a-zA-Z_a-zA-Z0-9_*)-number替换字符串中的 0 1 2 举例s/(a-zA-Z_a-zA-Z0-9_*)-number/1-num/将日期格式“月-日-年”改为“年.月.日”,比如:将 04-26-1997替换为使用命令:s/(0-90-9)-(0-90-9)-(0-90-9*)/3.1.2/g,第2章 第
17、31页,awk:文本处理语言,分别为该程序的三位设计者姓氏的第一个字母用法awk 程序 文件名列表awk-f 程序文件名 文件名列表程序:条件动作(内置循环:awk自动对每行文本执行上述条件判断和动作)处理方式输入文件的每行作为一个“记录”,变量NR就是行号每行用空格分隔开的部分,叫做记录的“域”变量$1是第1域内容,依次,$2是第2域内容,特别的,$0指的是整个这一行的内容awk的处理为:符合条件的行,执行相应的动作,第2章 第32页,awk的内置变量,变量 NR 当前记录的记录编号(No.of Record)$0 当前记录$1,$2,当前记录中的域FILENAME 当前输入的文件名,第2章
18、 第33页,awk描述条件的方法(1),不指定任何条件对文本文件的所有行进行处理使用与C语言了类似的关系算符 大于=大于或等于|条件或&条件与,第2章 第34页,awk描述条件的方法(2),正则表达式的模式匹配/regexpr/在文本文件所有行中检索模式特殊的条件:BEGIN和ENDBEGIN:开始处理所有文本行之前执行END:处理完所有文本行之后执行,第2章 第35页,awk描述动作的方法,描述“动作”时,简单的用法有print 变量1,变量2,printf(”格式串”,变量1,变量2,)自定义变量可以执行变量的累加等算数操作执行条件判断,第2章 第36页,awk举例(1),$ps-ef|g
19、rep guest guest 669 668 0 11:27:13 ttyp1 00:00:00-sh guest 678 669 0 11:27:18 ttyp1 00:00:00 vi$ps-ef|awk/guest/printf%s,$2 669 678$cat test.c|awk printf%d:%sn,NR,$0 1:main()2:3:printf(Hello!n);4:,第2章 第37页,awk举例(2),$date Thu May 27 22:02:22 BEIDT 2004$date|awk print$422:02:42$who zhang ttylb Sep 29
20、11:20liang ttyla Sep 29 11:53zhang ttylf Sep 29 12:04feng tty1c Sep 29 12:54$who|awk/*zhang/printf(%s,$2)tty1b tty1f$ls-s|awk$1 2000 print$2 disk.imgdocument.pdfpppd.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
21、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
22、页,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中
23、有类似的命令COMP,第2章 第41页,文件内容比较:md5sum,使用MD5算法(散列函数)根据文件内容生成16字节hash值,比较hash值是否相同,就可断定两文件内容是否完全相同使用SHA-1算法的命令名为sha1sum(20字节hash值)常用于比较位于网络不同机器上的两个文件内容,$md5sum src.tar proto.txtb9d2d3705ca4f3064f525fa1c137fe76 src.tar610232c1bf24929b69e9621eec4a23e8 proto.txt$md5sum src.tar proto.txt files.md5sum,$md5sum-
24、c files.md5sum src.tar:OKproto.txt:OK,仅将files.md5sum传送到另台计算机,在另台计算机上运行程序,比较同名文件的内容是否一致,失误率MD5:2-128=3.410-38SHA-1:2-160=4.710-50,第2章 第42页,求出两个文件的差别:diff,用法diff file1 file2功能比较两个版本的源程序文件,以寻找两者间差别Windows下类似功能的FC命令(File Comparison),常用/N选项,列出时打印行号发现不同,就列出一个如何将file1转化为file2的指令这些指令有a(Add),c(Change)和d(Dele
25、te)指令字母左边的行号是file1的行号,右面是file2的行号列出内容时,大于号后边的内容是需要在file1文件中增加的内容;小于号后边的内容是需从file1中删除的内容,第2章 第43页,cmp和diff举例,$cmp f1.c f2.cf1.c f2.c differ:char 69,line 3$diff f1.c f2.c3,5d2vm_mm=mm;map_count+;vm_next=NULL;260c257 i=i*8*sizeof(long);528c525swappable=1;-p-swappable=0;548a546,547 retval=p-pid;p-tgid=r
26、etval;,第2章 第44页,由命令diff产生的文件转化指令,第2章 第45页,diff命令常用的选项,-b 逐行比较两个文件时忽略每行结尾处的多余空格-e 为UNIX的行编辑程序ed生成脚本文件。ed命令使用这个脚本文件编辑file1文件,就可以变成文件file2,第2章 第46页,patch命令及CVS,patch 命令 读取由 diff 命令产生的差异列表(补丁文件),然后将源目录树中的文件组更改为新文件,一般应用于源码等文本文件CVS(Concurrent Versions System)对一个目录树(项目)下的文本文件进行版本管理便于多人合作开发的项目(一个代码库,多个现场)可以
27、通过网络访问代码库,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逐屏显示
28、文件:行滑动,屏幕翻页,退出cat:列出文件内容od:16进制打印文件字节码headtailtail的-f选项wc,字计数与行计数sorttee的用途,正则表达式的用途(匹配与替换)正则表达式规则正则表达式的应用grep基本正则表达式egrep扩展的正则表达式fgrep字符串匹配(KMP算法?)UNIX命令的界面风格sed流编辑正则表达式替换awk文本文件处理语言awk的变量awk的条件(数值范围,正则表达式匹配)awk的动作(函数,变量,条件),第2章 第48页,复习(2),tr翻译字符(字符转换)cmp文件字节码比较md5sum求出或验证文件MD5值diff文本文件差异解读diff的输出信息patch源代码管理系统的功能CVS,Subversion,git,