shell编程培训.ppt

上传人:qwe****56 文档编号:70013094 上传时间:2023-01-14 格式:PPT 页数:54 大小:926KB
返回 下载 相关 举报
shell编程培训.ppt_第1页
第1页 / 共54页
shell编程培训.ppt_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《shell编程培训.ppt》由会员分享,可在线阅读,更多相关《shell编程培训.ppt(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Shell编程编程TOPIC:Shell编程编程n n一、管道一、管道n n二、变量二、变量,判断和重复动作判断和重复动作n n三、三、Shell 编程编程n n四、四、awk和和sedTOPIC:Shell编程编程n n一、管道一、管道我们可以使用管道符”|”来连接进程.在Linux系统中,由管道连接起来的进程可以自动运行,就如同在他们有一个数据流一样.使用的管道数并没有一个量的限制.在这个命令中,使用了ps的输出,将这个输出以字母的顺序进行排序,使用uniq来解压进程,使用grep-vsh来移除名为sh的进程,最后在屏幕上显示结果$ps-ef|sort|uniq|grep-vsh|more

2、$ps|sort命名管道,匿名管道,FIFO管道(mkfifo)$psps.out$sortps.out$rmps.outTOPIC:Shell编程编程n n二、二、Shell 编程编程n nShell脚本的建立和执行ShellShell脚本脚本使用使用vi vi编辑编辑shellshell脚本脚本执行执行shellshell脚本的方式脚本的方式n n输入定向到输入定向到shellshell$sh$sh”SHELLSHELL当前当前shellshell的路径的路径TERMTERM终端的类型终端的类型ansivt100ansivt100HZHZ每秒时钟的中断次数每秒时钟的中断次数TZTZ时区时区

3、LOGNAMELOGNAME用户注册名用户注册名MAILCHECKMAILCHECK多长时间检查邮件是否到达多长时间检查邮件是否到达MAILPATHMAILPATH表示各个邮箱路径表示各个邮箱路径ShellShell中的特殊字符中的特殊字符n nShell元字符?匹配单个字符*匹配零个或多个字符abc匹配a、b、c这组字符中的一个!abc匹配a、b、c这组字符以外的某个字符a-z匹配在a至z这个范围内的某个字符!a-z匹配不在a至z这个范围内的某个字符a,ile,ax匹配一个或一组字符$cat file$cat fileLovely catLovely catcatcatcatchcatchc

4、a1_tabbit.ca1_tabbit.cabbitcabbit$grep ca1-9*t file$grep ca1-9*t file$egrep?ca1-9*t file$egrep?ca1-9*t file n n基本正则表达式元字符元字符元字符功能功能示例示例示例的匹配示例的匹配对对象象行首定位符/love/匹配所有以love开头的行$行尾定位符/love$/匹配所有以love结尾的行.匹配除换行符外的单个字符/l.e/匹配包含字母l、后跟两个任意字符、再跟字母e的行*匹配零个或多个前导字符/*love/匹配在零个或多个空格紧跟着模式love的行匹配指定字符组内的任一字符xyz将会匹

5、配字符x,y,或z.c-n匹配字符c到字符n之间的任意一个字符.B-Pk-y匹配从B到P,或者从k到y之间的任意一个字符.a-z0-9匹配任意小写字母或数字.b-d将会匹配范围在b到d之外的任意一个字符.这就是使用对字符集取反的一个实例.YyEeSs能够匹配yes,Yes,YES,yEs/Llove/匹配包含love和Love的行Awksedgrepegrep支持n n基本正则表达式元字符Sedgrepegrep支持元字符 功能示例示例的匹配对象词首定位符/词尾定位符/love/匹配包含以love结尾的单词的行Sedgrepegrep支持元字符元字符功能功能示例示例示例的匹配示例的匹配对对象象

6、&保存查找串以便在替换串中引用s/love/*&*/符号&代表查找串。字符串love将替换前后各加了两个星号的引用,即love变成*love*n n引号双引号双引号n n由双引号括起来的字符,除由双引号括起来的字符,除$、倒引号和反斜线、倒引号和反斜线()()仍保留其特殊仍保留其特殊功能外,其余字符通常作为普通字符对待功能外,其余字符通常作为普通字符对待单引号单引号n n单引号括起来的字符都作为普通字符出现单引号括起来的字符都作为普通字符出现倒引号倒引号n n倒引号括起来的字符串被倒引号括起来的字符串被shellshell解释为命令行,命令行的输出解释为命令行,命令行的输出结果取代被倒引号引用

7、的字符串。结果取代被倒引号引用的字符串。$echo The time is date,the file is$HOME/abc$echo The time is date,the file is$HOME/abcThe time is date,the file is$HOME/abcThe time is date,the file is$HOME/abc$Nuser=echo The number of users iswho|wc-l$Nuser=echo The number of users iswho|wc-l$echo$Nuser$echo$NuserThe number of

8、users is 5The number of users is 5n ntesttest或或n ntestf“$1”testf“$1”或或-f$1-f$1有关文件方面的测试有关文件方面的测试n n-r,-w,-x,-f,-d,-p,-s,-t-r,-w,-x,-f,-d,-p,-s,-t(文件名)(文件名)参数参数功能功能-r-r文件名文件名若文件存在并且是用户可读,为真若文件存在并且是用户可读,为真-w-w文件名文件名若文件存在并且是用户可写,为真若文件存在并且是用户可写,为真-x-x文件名文件名若文件存在并且是用户可执行,为真若文件存在并且是用户可执行,为真-f-f文件名文件名若文件存在

9、并且是普通文件,为真若文件存在并且是普通文件,为真-d-d文件名文件名若文件存在并且是目录文件,为真若文件存在并且是目录文件,为真-p-p文件名文件名若文件存在并且是若文件存在并且是FIFOFIFO文件,为真文件,为真-s-s文件名文件名若文件存在并且不是空文件,为真若文件存在并且不是空文件,为真-t-t描述字描述字如果打开文件时其描述字是与终端设备相关的,为如果打开文件时其描述字是与终端设备相关的,为真真有关字符串方面的测试有关字符串方面的测试参数参数功能功能-zs1-zs1s1s1长度为长度为0 0,为真,为真-ns1-ns1s1s1长度不为长度不为0 0,为真,为真s1s1s1s1不是空

10、字符串,为真不是空字符串,为真s1=s2s1=s2s1s1等于等于s2s2,为真,为真s1!=s2s1!=s2s1s1不等于不等于s2s2,为真,为真有关数值方面的测试有关数值方面的测试参数参数功能功能n1eqn2n1eqn2n1n1等于等于n2,n2,为真为真n1nen2n1nen2n1n1不等于不等于n2,n2,为真为真n1ltn2n1ltn2n1n1小于小于n2,n2,为真为真n1len2n1len2n1n1小于或等于小于或等于n2,n2,为真为真n1gtn2n1gtn2n1n1大于大于n2,n2,为真为真n1gen2n1gen2n1n1大于或等于大于或等于n2,n2,为真为真n nca

11、se语句casecase字符串字符串 inin正则表达式正则表达式1)1)命令命令命令命令;正则表达式正则表达式2)2)命令命令命令命令;正则表达式正则表达式n)n)命令命令命令命令;esacesaccase$choice incase$choice in time|date)echo“The time is date”;time|date)echo“The time is date”;dir|path)echo“current directory is pwd”;dir|path)echo“current directory is pwd”;*)echo“bad argument”;*)ec

12、ho“bad argument”;esacesacn nwhile语句whilewhile测试条件或命令测试条件或命令dodo命令表命令表donedonewhile test$1while test$1do do if test-f$1 if test-f$1 then echo“display:$1”then echo“display:$1”cat$1 cat$1 else echo“$1 is not a file name“else echo“$1 is not a file name“fi fi shift shiftdonedoneecho“key in file name-c”ec

13、ho“key in file name-c”read filenameread filenameecho“key in data”echo“key in data”read x read x while test“$x”!=“exit”while test“$x”!=“exit”dodo echo$x$filename echo$x$filename read x read xdonedonecat$filenamecat$filenamen nuntil语句untiluntil测试条件或命令测试条件或命令dodo命令表命令表donedoneuntil test “$2”=“”until te

14、st “$2”=“”dodo cp$1$2 cp$1$2 shift 2 shift 2donedoneif test“$1”!=“”if test“$1”!=“”then echo“bad argument!”then echo“bad argument!”fi fin nfor语句forfor变量变量 inin值表值表dodo命令表命令表donedonefor day in Monday Wednesday Fridayfor day in Monday Wednesday Fridaydodo echo$day echo$daydonedoneforfor变量变量 inin文件正则文件正

15、则表达式表达式dodo命令表命令表donedonefor file in m*.cfor file in m*.cdo do cat$file cat$filedonedoneforin$*forin$*或者或者foriforidodododo命令表命令表命令表命令表donedonedonedone$cat ex12$cat ex12dir=$1;shiftdir=$1;shiftif test-d$dirif test-d$dirthenthen cd$dir cd$dir for name in$*for name in$*do do if test-f$name if test-f$na

16、me then cat$name then cat$name echo“End of$dir/$name”echo“End of$dir/$name”else echo“invalid file name:$dir/$name”else echo“invalid file name:$dir/$name”fi fi done doneelse echo“bad directory name:$dir”else echo“bad directory name:$dir”fi fin nexitexit命令命令exitnexitnn n算术表达式算术表达式+,-,*,/,%+,-,*,/,%exp

17、rn1exprn1运算符运算符 n2n2expr12*12expr12*12n n函数函数函数名函数名()()命令表命令表$cat ex13$cat ex13abc()abc()echo“Begin”echo“Begin”echo$a$b$c echo$a$b$c echo$1$2$3 echo$1$2$3 echo “End”echo “End”a=5a=5b=10b=10c=99c=99abc First Second Thirdabc First Second Third$ex13$ex13BeginBegin5 10 995 10 99First Second ThirdFirst S

18、econd ThirdEndEndn nset命令显示迄今为止所定义的全部变量显示迄今为止所定义的全部变量设定位置参数值设定位置参数值#cat setpos#cat setposecho dateecho dateset dateset dateecho$2$3$6echo$2$3$6echo$0$1$2$3$4$5$6echo$0$1$2$3$4$5$6$setpos$setposSun Sep 28 16:48:46 CST 1997Sun Sep 28 16:48:46 CST 1997Sep 28 1997Sep 28 1997setpos Sun Sep 28 16:48:46 CS

19、T 1997setpos Sun Sep 28 16:48:46 CST 1997改变执行改变执行shellshell脚本时的选项设定脚本时的选项设定n nset-set-标记参数标记参数设置标记设置标记n nset+set+标记参数标记参数关闭标记关闭标记n n标记参数标记参数n n xx在完成参数在各命令行中的替换并在在完成参数在各命令行中的替换并在执行该命令行之前,先显示该行内容。执行该命令行之前,先显示该行内容。行首行首“”。n n vv使使shellshell对以后各个语句行都按原样对以后各个语句行都按原样先在屏幕上显示出来,然后才执行命令先在屏幕上显示出来,然后才执行命令行,并显示

20、结果。行,并显示结果。$cat ex8$cat ex8 set x set x echo“current shell$-”echo“current shell$-”set+x set+x set v set v echo“current shell$-”echo“current shell$-”$ex8$ex8+current shell x+current shell xcurrent shell xcurrent shell xcurrent shell$-current shell$-current shell vcurrent shell vn nset命令pp显示环境变量显示环境变量

21、$setsetBASH=/bin/bashBASH=/bin/bashBASH_VERSINFO=(0=3 1=2 2=25 3=1 BASH_VERSINFO=(0=3 1=2 2=25 3=1 4=release 5=x86_64-redhat-linux-gnu)4=release 5=x86_64-redhat-linux-gnu)BASH_VERSION=3.2.25(1)-releaseBASH_VERSION=3.2.25(1)-releaseCLASSPATH=/usr/local/staf/samples/demo/STAFDemo.jar:/CLASSPATH=/usr/l

22、ocal/staf/samples/demo/STAFDemo.jar:/usr/local/staf/lib/JSTAF.jar:usr/local/staf/lib/JSTAF.jar:COLORS=/etc/DIR_COLORSCOLORS=/etc/DIR_COLORSCOLUMNS=132COLUMNS=132CVS_RSH=sshCVS_RSH=ssh$set str=ok$set str=ok 就是将变量就是将变量就是将变量就是将变量strstr的值设置成字符串的值设置成字符串的值设置成字符串的值设置成字符串“OK”OK”p设置环境变量Set表达式n nset命令setset的的

23、的的/a/a参数就是让参数就是让参数就是让参数就是让SETSET可以支持数学符号进行加减等一可以支持数学符号进行加减等一可以支持数学符号进行加减等一可以支持数学符号进行加减等一些数学运算些数学运算些数学运算些数学运算!支持的数学运算包含(优先权递减)支持的数学运算包含(优先权递减)支持的数学运算包含(优先权递减)支持的数学运算包含(优先权递减):()()分组分组分组分组 !-!-一元运算符一元运算符一元运算符一元运算符 */%/%算数运算符算数运算符算数运算符算数运算符 +-+-算数运算符算数运算符算数运算符算数运算符 逻辑移位逻辑移位逻辑移位逻辑移位&按位按位按位按位“与与与与”按位按位按位

24、按位“异异异异”|按位按位按位按位“或或或或”=*=/=%=+=-=*=/=%=+=-=赋值赋值赋值赋值&=|=,&=|=,表达式分隔符表达式分隔符表达式分隔符表达式分隔符 p设置数值运算用法示例:用法示例:用法示例:用法示例:set/a num=2*10,set/a num=2*10,这样变量这样变量这样变量这样变量numnum的值将变为:的值将变为:的值将变为:的值将变为:20 20 改变执行改变执行shellshell脚本时的选项设定脚本时的选项设定n nset-set-标记参数标记参数设置标记设置标记n nset+set+标记参数标记参数关闭标记关闭标记n n标记参数标记参数n n x

25、x在完成参数在各命令行中的替换并在在完成参数在各命令行中的替换并在执行该命令行之前,先显示该行内容。执行该命令行之前,先显示该行内容。行首行首“”。n n vv使使shellshell对以后各个语句行都按原样对以后各个语句行都按原样先在屏幕上显示出来,然后才执行命令先在屏幕上显示出来,然后才执行命令行,并显示结果。行,并显示结果。$cat ex8$cat ex8 set x set x echo“current shell$-”echo“current shell$-”set+x set+x set v set v echo“current shell$-”echo“current shell

26、$-”$ex8$ex8+current shell x+current shell xcurrent shell xcurrent shell xcurrent shell$-current shell$-current shell vcurrent shell vbc在默认的情况下是个交互式的指令。在bc工作环境下,可以使用以下计算符号:数学运算$bc$bc bc1.06bc1.06 Copyright1991-1994,1997,1998,2000FreeCopyright1991-1994,1997,1998,2000FreeSoftwareFoundation,Inc.Software

27、Foundation,Inc.ThisisfreesoftwarewithABSOLUTELYNOThisisfreesoftwarewithABSOLUTELYNOWARRANTY.WARRANTY.Fordetailstypewarranty.Fordetailstypewarranty.3+63+6 9 9 103103 10001000+加法-减法*乘法/除法指数%余数bc与管道结合数学运算$morecalc.txt3+24+58*2$bccalc.txt5916#echo3+4;5*2;52;18/4|bc710254bc与文件结合另外,bc除了除了scale来设定小数来设定小数位之

28、外,还有位之外,还有ibase和和obase来来其它进制的运算。其它进制的运算。/将16进制的A7输出为10进制,(英文只能大写)$echoibase=16;A7|bc167/将2进制的11111111转成10进制$echoibase=2;11111111|bc255/输入为16进制,输出为2进制$echoibase=16;obase=2;B5-A4|bc10001Expr运算符结合表达式使用计算加减乘除时要使用空格和转义数学运算$exprlength“”21/字串长度字串长度$111yangzhigang /从位置处抓取字串从位置处抓取字串/字串开始处字串开始处$cu13$expr6+3有空

29、格9$expr2*3有转义符号6$echo$a6$expr$a+3?TOPIC:Shell编程编程n n四、四、awk 和和 sed1、编程工具、编程工具awk什么是什么是什么是什么是awkawk?awkawk是一种程序设计语言是一种程序设计语言,主要用来处主要用来处理数据和产生报表理数据和产生报表.它对输入数据它对输入数据(文件、标准输入或命令文件、标准输入或命令的输出)逐行进行扫描,匹配指定的模式,的输出)逐行进行扫描,匹配指定的模式,并执行指定的操作。并执行指定的操作。awk的基本格式的基本格式 1.1.语法格式语法格式语法格式语法格式awk pattern action filenam

30、eawk pattern action filenameawkawk扫描扫描filenamefilename中的每一行中的每一行,对符合模式对符合模式patternpattern的行执行操作的行执行操作action.action.特例特例:awkpatternfilenameawkpatternfilename显示所有符合模式显示所有符合模式patternpattern的行的行awkactionfilenameawkactionfilename对所有行执行操作对所有行执行操作actionaction2.应用实例:应用实例:$catemployees$catemployeesTomJones44

31、245/12/66543354TomJones44245/12/66543354MaryAdams543611/4/6328765MaryAdams543611/4/6328765SallyChang16547/22/54650000SallyChang16547/22/54650000BillyBlack16839/23/44336500BillyBlack16839/23/44336500$awk/Mary/employees$awk/Mary/employeesMaryAdams543611/4/6328765MaryAdams543611/4/6328765$awkprint$1emp

32、loyees$awkprint$1employeesTomTomMaryMarySallySallyBillyBilly$awk/Sally/print$1$2employees$awk/Sally/print$1$2employeesSallyChangSallyChang3.从其它命令输入从其它命令输入格式格式格式格式:command|awk pattern:command|awk pattern command|awk action command|awk action command|awk pattern action command|awk pattern action实例实例实例

33、实例:$who$whozhanglan tty01 Jan 12 18:36zhanglan tty01 Jan 12 18:36yuexi tty02 Jan 12 17:03yuexi tty02 Jan 12 17:03liuzhen tty15 Jan 12 08:45liuzhen tty15 Jan 12 08:45$who|awk/tty01/print$1$who|awk/tty01/print$1(谁在谁在谁在谁在1 1号终端上号终端上号终端上号终端上)zhanglanzhanglan4.从标准输入设备从标准输入设备(键盘键盘)输入输入格式格式格式格式:awk pattern

34、 action:awk pattern action由于未指定输入数据来源由于未指定输入数据来源,缺省情况下从标准输入缺省情况下从标准输入设备设备(键盘键盘)读取数据读取数据.键盘上每输入一行键盘上每输入一行,awk,awk就处就处理一行理一行,直到遇到直到遇到DD为止为止.例如例如:$awk/aaa/print$0,NF$awk/aaa/print$0,NFbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4aaaaaaaaaaaaaaaaaa4(awk(awk的输出行的输出行)

35、xxxxxxxxyyyyyyyxyzxxxxxxxxyyyyyyyxyzDD格式化输出格式化输出print 函数函数用于不需要复杂格式的简单输出用于不需要复杂格式的简单输出例如例如:$ps-e|awk/05/print“tty05:”$4$ps-e|awk/05/print“tty05:”$4(查看查看5 5号终端上的用户现在在干什么号终端上的用户现在在干什么)tty05:shtty05:shtty05:cctty05:cctty05:findtty05:findawk命令文件命令文件格式格式格式格式:awk -f awk_file data_fileawk -f awk_file data_

36、file当需要对输入数据中的一行执行多项操作时当需要对输入数据中的一行执行多项操作时当需要对输入数据中的一行执行多项操作时当需要对输入数据中的一行执行多项操作时,常常常常把这些操作命令放在一个命令文件中把这些操作命令放在一个命令文件中把这些操作命令放在一个命令文件中把这些操作命令放在一个命令文件中,而不是在命令而不是在命令而不是在命令而不是在命令行上发出行上发出行上发出行上发出.awk awk运行时运行时运行时运行时,对输入数据中的每一行执行命令文件对输入数据中的每一行执行命令文件对输入数据中的每一行执行命令文件对输入数据中的每一行执行命令文件中的所有操作后中的所有操作后中的所有操作后中的所有

37、操作后,再对下一行数据进行同样的处理过再对下一行数据进行同样的处理过再对下一行数据进行同样的处理过再对下一行数据进行同样的处理过程程程程,依此类推依此类推依此类推依此类推,直到输入数据的最后一行直到输入数据的最后一行直到输入数据的最后一行直到输入数据的最后一行.(要特别注意操作顺序和流程要特别注意操作顺序和流程要特别注意操作顺序和流程要特别注意操作顺序和流程 )实例实例实例实例:$cat my_awk$cat my_awk/Sally/print“*/Sally/print“*found Sally!*”found Sally!*”print$1,$2,$3print$1,$2,$3$awk

38、-f my_awk employees$awk -f my_awk employees*found Sally!*found Sally!*Sally Chang 1654Sally Chang 1654五五.记录和域记录和域$1$2$3$4$5$1$2$3$4$5NR=1NR=1TomJones44245/12/66543354TomJones44245/12/66543354NF=5NF=5NR=2NR=2MaryAdams543611/4/6328765MaryAdams543611/4/6328765NF=5NF=5NR=3NR=3SallyChang16547/22/54650000

39、SallyChang16547/22/54650000NF=5NF=5NR=4NR=4BillyBlack16839/23/44336500BillyBlack16839/23/44336500NF=5NF=5$0$0$0:$0:整个记录整个记录整个记录整个记录(整个行整个行整个行整个行)NF:)NF:记录中域的个数记录中域的个数记录中域的个数记录中域的个数$1:$1:记录中的第一个域记录中的第一个域记录中的第一个域记录中的第一个域 NR:NR:输入数据中的记录号输入数据中的记录号输入数据中的记录号输入数据中的记录号$2:$2:记录中的第二个域记录中的第二个域记录中的第二个域记录中的第二个域n

40、 n实例实例:n n$awk/16/printNR,$1,$2,$3,NFemployees$awk/16/printNR,$1,$2,$3,NFemployeesn n 3SallyChang165453SallyChang16545n n4BillyBlack168354BillyBlack16835n n n n$awk/MaryAdams/printNR,$0employees$awk/MaryAdams/printNR,$0employeesn n2MaryAdams543611/4/63287652MaryAdams543611/4/6328765n n注意注意注意注意:n n在查

41、找包含空格的字符串在查找包含空格的字符串(如如MaryAdams)MaryAdams)时时n n要特别小心该空格的状况要特别小心该空格的状况(几个几个Tab?)Tab?)n n为避免可能出现的混淆,实际应用中常把域分隔符设置为可见为避免可能出现的混淆,实际应用中常把域分隔符设置为可见字符,如分号字符,如分号(;)或冒号(或冒号(:):)这种方法同时也节省大量的存这种方法同时也节省大量的存储空间储空间.(.(why?why?)awkFawkF“:”/MaryAdams/printNR,$0employees/MaryAdams/printNR,$0employees2、流编辑器流编辑器sed一一

42、.什么是流编辑器?什么是流编辑器?什么是流编辑器?什么是流编辑器?流编辑器是一种流水线型的、非交互式流编辑器是一种流水线型的、非交互式流编辑器是一种流水线型的、非交互式流编辑器是一种流水线型的、非交互式的文本编辑器。的文本编辑器。的文本编辑器。的文本编辑器。它使用户可以在命令行上(而不是它使用户可以在命令行上(而不是它使用户可以在命令行上(而不是它使用户可以在命令行上(而不是编辑器中)对文件进行无破坏性编辑。编辑器中)对文件进行无破坏性编辑。编辑器中)对文件进行无破坏性编辑。编辑器中)对文件进行无破坏性编辑。屏幕编辑器与流编辑器的区别vivisedsed1.1.1.1.用户操作方式用户操作方式

43、用户操作方式用户操作方式2.2.文本处理模式文本处理模式文本处理模式文本处理模式3.3.编辑命令地点编辑命令地点编辑命令地点编辑命令地点4.4.编辑空间编辑空间编辑空间编辑空间5.5.对原文本影响对原文本影响对原文本影响对原文本影响6.6.批量发出命令批量发出命令批量发出命令批量发出命令7.7.基本编辑单位基本编辑单位基本编辑单位基本编辑单位8.8.主要应用场合主要应用场合主要应用场合主要应用场合9.9.可编文件大小可编文件大小可编文件大小可编文件大小交互式交互式交互式交互式全局并行全局并行全局并行全局并行(可逆行可逆行可逆行可逆行)编辑器中编辑器中编辑器中编辑器中临时文件临时文件临时文件临时

44、文件(文件缓存文件缓存文件缓存文件缓存)破坏性的破坏性的破坏性的破坏性的不能不能不能不能字符字符字符字符人工编辑人工编辑人工编辑人工编辑较小较小较小较小非交互式非交互式非交互式非交互式逐行串行逐行串行逐行串行逐行串行(不可逆行不可逆行不可逆行不可逆行)命令行上命令行上命令行上命令行上模式空间模式空间模式空间模式空间(行缓存行缓存行缓存行缓存)非破坏性的非破坏性的非破坏性的非破坏性的可以可以可以可以行行行行程序自动编辑程序自动编辑程序自动编辑程序自动编辑较大较大较大较大 sed 命令基本格式命令基本格式1.1.sed command filesed command file2.2.sed -n

45、command filesed -n command file3.3.sed -e command1 e command2 filesed -e command1 e command2 file4.4.sed -f cmd_file filesed -f cmd_file file任选项说明任选项说明任选项说明任选项说明:command:command:行编命令行编命令行编命令行编命令 -n:-n:只显示与模式匹配的行只显示与模式匹配的行只显示与模式匹配的行只显示与模式匹配的行(缺省都显示缺省都显示缺省都显示缺省都显示)-e:-e:在命令行上进行多次编辑在命令行上进行多次编辑在命令行上进行多次

46、编辑在命令行上进行多次编辑 -f:-f:编辑命令放在随后的命令表文件中编辑命令放在随后的命令表文件中编辑命令放在随后的命令表文件中编辑命令放在随后的命令表文件中注意注意:sedsed命令的结果是送到标准输出上,即命令的结果是送到标准输出上,即命令的结果是送到标准输出上,即命令的结果是送到标准输出上,即荧光屏上,如果要将结果保存在文件中,荧光屏上,如果要将结果保存在文件中,荧光屏上,如果要将结果保存在文件中,荧光屏上,如果要将结果保存在文件中,应该使用重定向功能!应该使用重定向功能!应该使用重定向功能!应该使用重定向功能!例如:例如:例如:例如:seds/student/teacher/gold

47、filenewfileseds/student/teacher/goldfilenewfile三.行编辑命令的基本格式1.1.行定位符行定位符行定位符行定位符 编辑命令元字符编辑命令元字符编辑命令元字符编辑命令元字符 例如例如例如例如:sed 1,9d abc:sed 1,9d abc sed -n 196p abc sed -n 196p abc2.2./正则表达式正则表达式正则表达式正则表达式/编辑命令元字符编辑命令元字符编辑命令元字符编辑命令元字符 例如例如例如例如:sed -n /student/p filename:sed -n /student/p filename sed /xy

48、z/d filename sed /xyz/d filename3.定位符定位符定位符定位符 元字符元字符元字符元字符/正则表达式正则表达式正则表达式正则表达式/元字符元字符元字符元字符 例如例如例如例如:sed n 3,8s/east/west/filename:sed n 3,8s/east/west/filename sed n 1,$s/computer/network/g filename sed n 1,$s/computer/network/g filename五五.sed应用实例应用实例n n打印文件内容打印文件内容打印文件内容打印文件内容:p:p命令命令命令命令n nsed-

49、n22,35pfile1sed-n22,35pfile1n n打印打印file1file1的第的第22352235行行n nsed-n/string/pfile2sed-n/string/pfile2n n打印打印file2file2中包含中包含stringstring的行的行n nsed-n9,/uestc/pfile3sed-n9,/uestc/pfile3n n打印打印file3file3中第中第9 9行到以行到以uestcuestc开头的行开头的行n nsed-n/Cchina/pfile4sed-n/Cchina/pfile4n n打印打印file4file4中包含中包含ChinaC

50、hina或或chinachina的行的行n n2.删除文件内容删除文件内容:d命令命令n nn nsed76dfile5sed76dfile5n n删除删除删除删除file5file5中的第中的第中的第中的第7676行行行行n nsed9,$dfile6sed9,$dfile6n n删除删除删除删除file6file6中第中第中第中第8 8行以后的所有行行以后的所有行行以后的所有行行以后的所有行n nsed/co*ool/dfile7sed/co*ool/dfile7n n删除删除删除删除file7file7中包含中包含中包含中包含cool,coool,coooolcool,coool,coo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁