1。find【擅长在目录下找文件】 find命令用来在指定目录下查找文件 语法:findpathoption 进阶:findpathoption〔print〕〔execcommand〕{}; 注意:{}表示查询的结果。1。1常用查询选项option name:根据名称匹配 iname:忽略大小写例如:查找当前目录下以log为结尾的文件:find。namelog user:根据所属与的组进行查询例如:查当前路径下,属于sichuan的文件:find。usersichuan type:根据类型进行查找f文件find。typefd目录find。typedc字符设备文件find。typecb块设备文件find。typebl链接文件find。typelp管道文件find。typep例如:查当前路径下所有文件find。typef size:根据文件大小匹配n小于大小为n的文件n大于大小为n的文件查找ect目录下,小于10000字节的文件findetcsize10000c查找etc目录下,大于1M的文件findetcsize1M mindepthn:从第n级目录开始搜索从etc的第三级子目录开始搜索。findetcmindepth3name。conf maxdepthn:表示至多搜索到第n1级子目录。在etc中搜索符合条件的文件,但最多搜索到2级子目录。findetctypefname。confsize10kmaxdepthc2 regex:基于正则表达式匹配文件路径 iregex:基于正则表达式匹配文件路径(忽略大小写)匹配当前目录下,所有。txt和。pdf文件,用转意find。regex。(。txt。pdf)34;1。2根据时间戳进行搜索 UNIXLinux文件系统每个文件都有三种时间戳访问时间(atime天,amin分钟):用户最近一次访问时间。修改时间(mtime天,mmin分钟):文件最后一次修改时间。变化时间(ctime天,cmin分钟):文件数据元(例如权限等)最后一次修改时间。 mtime:根据文件更改时间查找,单位小时nn天以内修改的文件。nn天以外修改的文件。n正好n天修改的文件。 mmin:根据文件更改时间查找,单位分钟nn分钟以内修改过的文件nn分钟之前修改过的文件查询etc目录下30分钟之前修改过的文件。findetcmmin30查询etc目录下30分钟之内修改过的目录。findetcmmin30typed查询etc目录下,5天以内修改且以conf结尾的文件findetcmtime5name。conf查询etc目录下,10天之前修改,且属于sichuan的文件findetcmtime10usersichuan1。3对查找到的文件如何操作 print:打印输出。默认的选项,即打印出找到的结果。 exec:对搜索到的文件执行特定的操作,固定的格式为:execcommond{};注意:{}表示查询的结果。搜索etc目录下的文件(非目录),文件以。conf结尾,且大于10k的文件然后将其删除。findetctypefname。confsize10kexecrmf{};搜索条件同例1一样,但是不删除,只是将其复制到rootconf目录下findetctypefname。confsize10kexeccp{}将datalog目录下以。log结尾的文件,且更改时间在7天以上的删除。finddatalogname。logmtime7 ok和exec的功能一样,只是每次操作都会给用户提示。 逻辑运算符 a:与(默认情况查询条件之间都是与的关系) o:或 not!非或find。(name。txtoname。pdf)find。name。txtoname。pdf找出home下不是以。txt结尾的文件findhome!name。txt1。4xargs xargs:可以将一个命令的输出作为参数发送给另一个命令。 当前目录搜索所有文件,文件内容包含aaa的内容find。typefnamexargsgrepaaa。a。txt:aaa。b。txt:aaa 统计代码行数代码行数统计,grepv39;过滤空白行wclfind。name。javaxargscatgrepvwcl1。5常用find命令 查找当前目录下所有。txt文件并把他们拼接起来写入到all。txt文件中find。typefname。txtexeccat{};。all。txt 将30天前的。log文件移动到old目录中find。typefmtime30name。logexeccp{} 找出当前目录下所有。txt文件并以File:文件名的形式打印出来find。typefname。txtexecprintfFile:s{}; 因为单行命令中exec参数中无法使用多个命令,以下方法可以实现在exec之后接受多条命令exec。text。sh{}; 要列出所有长度为零的文件find。empty 扩充:查找关键字出现的行数 Linuxcat查看文件,查找关键字(grep),统计(wcl)cat查找关键字出现的行数语法:cat文件grep关键字wclcatprocmeminfogrepSwapwclLinux系统中的wc(WordCount)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。1命令格式:wc〔选项〕文件。。。2命令参数:c统计字节数。l统计行数。m统计字符数。这个标志不能与c标志一起使用。w统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。L打印最长行的长度。help显示帮助信息version显示版本信息2。grep【擅长在文件中匹配文本】 grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配的标红)语法:grep〔option〕patternfile简介:常用来做全局数据的查询定位(最擅长文本过滤) 命令参数:A显示行数:显示匹配行及后面n行内容B显示行数:显示匹配行及前面n行内容C显示行数:显示匹配行及前后n行内容c:统计匹配成功的行数e:实现多个选项间的逻辑or关系。或者使用egrepegreprootbash39;passwdgrepeabceb39;a。txtE:扩展的正则表达,相当于egrepfFILE:从FILE获取PATTERN匹配F:相当于fgrepl:列出文件内容符合指定的范本样式的文件名称。L:列出文件内容不符合指定的范本样式的文件名称i:字符忽略大小写n:显示匹配的行号o:仅显示匹配到的字符串q:静默模式,不输出任何信息s:不显示错误信息。v:显示不被pattern匹配到的行,相当于〔〕反向匹配grepv39;:命令的作用是过滤空白符空白行:w:只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),color:匹配到的关键字会高亮显示和分别标注单词的开始与结尾。(类似模糊查询)grepman会匹配‘Batman’、’manic’、’man’等grep‘man’匹配’manic’和’man’,但不是’Batman’grep‘’只匹配’man’,而不是’Batman’或’manic’等其他的字符串查询关键字高亮显示:grepxxxcolorauto 举例:cattest。txtaaabbbbbAAAaaaBBBBASDABBDA显示结果及后两行数据grepA2btest。txtbbbbbAAAaaaBBBBASDABBDA统计行数grepcaaatest。txtcattest。txtgrepcaaa2实现多个逻辑or或grepeAAAebbbtest。txtbbbbbAAAaaa忽略大小写并显示行号cata。txtgrepinbbb2:fontcolorredbbbbbfont4:BBBBASDABBDA仅显示匹配到的字符串grepoASDAtest。txtASDA静默模式,不显示grepqaatest。txt取反grepvaaatest。txtbbbbbBBBBASDABBDA匹配整个单词grepwaaaaaa从file获取PATTERN匹配catgrep。txtaaagrepfgrep。txttestaaaAAAaaa使用l选项,找出文件内容中包含first的文件名greplfirst。txt1。txt使用L选项,找出文件内容中不包含first的文件名grepLfirst。txt2。txt3。txt以leo开头的行grepleoetcpasswd以bash结尾的行grepbash39;etcpasswd我们尝试匹配bin这个词(只包含bin比匹配sbin这样的)在正则表达式中,我们通常用尖括号表示一个词etcpasswdcolor2。1grep,cat,管道符配合使用cattest。txtgrephello管道符,将一个命令的输出作为另外一个命令的输2。2grep,ps,管道符配合使用psefgrepsshgrepvgrep过滤ssh进程信息,并去除最后一行的grep信息2。3常用grep命令 查找xxx目录下所有文件带abc的行grepabchomesichuanliheweiprojectdaquhuagetMd5Infohomesichuanxxxprojectabca。txt:abc123homesichuanxxxprojectabcb。txt:abcd123 检索日志,并显示该条日志的前后N(10)行记录,并显示行号(n)cat日志文件grepnB10A10关键字 3。sed【擅长取行】 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。简介:常用来做行数据增删改查(最擅长取行)格式:sed〔option〕。。。scriptinputfile翻译:sed〔选项〕〔脚本命令〕文件名3。1sed格式说明 格式:sed〔option〕。。。scriptinputfile 选项【option】:n不输出模式空间内容到屏幕,即不自动打印e多点编辑fPATHSCRIPTFILE:从指定文件中读取编辑脚本r支持使用扩展正则表达式i直接编辑文件(慎用)i。bak备份文件并原处编辑 script地址范围(选择第几行)不给地址:对全文进行处理单地址: :指定的行,:最后一行 pattern:被此处模式所能够匹配到的每一行地址范围: , , pat1,pat2 ,pat1:步进 12奇数行 22偶数行 编辑命令:d删除模式空间匹配的行,并立即启用下一轮循环p打印当前模式空间内容,追加到默认输出之后(匹配成功的内容追加到文本最后)a〔〕text1在指定行后面追加文本,支持使用实现多行追加i〔〕text在行前面插入文本c〔〕text表示把选定的行改为新的文本wpathsomefile保存模式匹配的行至指定文件rpathsomefile在指定的行后插入xx文本中所有内容q截止到选定的script地址时命令终止为模式空间中的行打印行号!模式空间中匹配行取反处理s:查找替换,支持使用其它分隔符,s,s s替换标记:【flags标记】格式1:sed‘s’example。txt格式2:sed‘s’example。txt数字1512同一行中第几次出现,例如sax2,能匹配上的只有aaa中间的a,数字代表第二次出现g选择的行内全局替换(否则匹配行内第一个)p显示替换成功的行wPATHTOSOMEFILE将替换成功的行保存至文件中用正则表达式匹配的内容进行替换;选中的行内匹配第n个子串,该子串之前在pattern中用()指定。转义(转义替换部分包含:、等)。 3。2s替换脚本命令 格式:sed〔addressrangepatternrange〕soriginalstringreplacementstring〔substituteflags〕 解释:addressrange:地址列表,表示从哪个地方开始执行,如:1,3表示第1行到第3行;patternrange:样式列表,表示从哪个匹配串开始,如:Jane,表示从行中包含字符串Jane的行开始执行s:表示要执行替换命令(substitute);originalstring:需要被替换的字符串;replacementstrings:替换后的字符串;substituteflags:可选替换标志符。 注意:如果没有〔addressrangepatternrange〕,默认选择全文进行替换d表示删除表示行尾表示开头s空白符正则s表示连续空格的字符串 案例:【sedscriptinputfile】catexample。txt101,JohnDoe,CEO102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager1。把第一行的John替换成lili字符串sed1sJohnliliexample。txt101,liliDoe,CEO102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager2。把第25行的Manager替换成lilised2,5sManagerliliexample。txt101,JohnDoe,CEO102,JasonSmith,ITlili103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,Salerlili3。把John所在字符串行当中的CEO替换成XXXsedJohnsCEOXXXexample。txt101,JohnDoe,XXX102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager4。从第四行而且包含字符串‘Ram’的行中,把Developer字符串替换成XXXsed4,RamsDeveloperXXXexample。txt101,JohnDoe,XXX102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager5。如果没有addressrange和patternrange,那么就会把每一行碰到的第一个匹配字符串给替换掉seds1AAAexample。txtAAA01,JohnDoe,CEOAAA02,JasonSmith,ITManagerAAA03,RajReddy,SysadminAAA04,AnandRam,DeveloperAAA05,JaneMiller,SalerManager6s后的数字标记1,2,3把要匹行中第n个符合条件的匹配串替换成我们想要的字符串把每一行第二个匹配的1,进行替换seds1AAA2example。txt10AAA,JohnDoe,CEO102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager7将originstring替换到replacestringsedsJohn〔〕example。txt101,〔John〕Doe,CEO102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager用文本模式指定行区间grepdemoetcpasswddemo:x:502:502::homeSamantha:binbash用正斜线将要指定的pattern封起来,sed会将该命令作用到包含指定文本模式的行上。在包含demo的行中,进行s替换seddemosbashcshetcpasswdroot:x:0:0:root:root:binbash。。。demo:x:502:502::homedemo:bincsh。。。3。3。g,w,p,a,i,c,y,q,r,f,d脚本命令 g全局替换g全局标志会把遇到的所有的满足条件的字符串给替换掉seds1AAAgexample。txtAAA0AAA,JohnDoe,CEOAAA02,JasonSmith,ITManagerAAA03,RajReddy,SysadminAAA04,AnandRam,DeveloperAAA05,JaneMiller,SalerManager w输出到文本把每行碰到第一个字符串John替换成lili字符串,并写入output。txt中,不写数字默认就是第一个匹配到的seds1AAA1woutput。txtexample。txtcatoutput。txtAAA01,JohnDoe,CEO p标记会输出修改过的行3。np(n选项会禁止sed输出,但p标记会输出修改过的行)sedns1AAA2pexample。txt10AAA,JohnDoe,CEO a命令追加行(在匹配内容后面追加)catexample。txt101,JohnDoe,CEO102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager在行尾追加xxxsedaxxxexample。txt101,JohnDoe,CEO102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManagerxxx在文本匹配处增加多行sedJasonaaaabbbexample。txt101,JohnDoe,CEO102,JasonSmith,ITManageraaabbb103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager 使用i命令插入行(在匹配内容前面插入)sed2ixxxexample。txt101,JohnDoe,CEOxxx102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager 使用c命令修改所在行sedJasoncxxxexample。txt101,JohnDoe,CEOxxx103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager 使用y命令作字符转换cata。txtabcdef1234sedyabcABCa。txtABCdef1234 使用q命令终止执行示例:sed3qinputfile执行完第3行后终止格式:sedAnandqinputfile匹配到Anand行后退出sed3qexample。txt101,JohnDoe,CEO102,JasonSmith,ITManager103,RajReddy,SysadminsedJasonqexample。txt101,JohnDoe,CEO102,JasonSmith,ITManager r将文件中的内容插入到匹配位置后sed命令会将filename文件中的内容插入到address指定行的后面,比如说:catdata12。txtThisisanaddedline。Thisisthesecondaddedline。sed3rdata12。txtdata6。txtThisislinenumber1。Thisislinenumber2。Thisislinenumber3。Thisisanaddedline。Thisisthesecondaddedline。Thisislinenumber4。如果你想将指定文件中的数据插入到数据流的末尾,可以使用地址符,例如:sedrdata12。txtdata6。txtThisislinenumber1。Thisislinenumber2。Thisislinenumber3。Thisislinenumber4。Thisisanaddedline。Thisisthesecondaddedline。 f插入并使用sh脚本cattest。txthtmltitleFirstWedtitlebodyh1Helloh1h2Helloh2h3Helloh3bodyhtml使用正则表示式给所有第一个的h1、h2、h3添加,给第二个h1、h2、h3添加catsed。shh〔09〕{12}sedfsed。shtest。txth1Helloh1h2Helloh2h3Helloh3 d删除脚本命令当和指定地址一起使用时,删除命令显然能发挥出大的功用。可以从数据流中删除特定的文本行。通过行号指定,比如删除data6。txt文件内容中的第3行:catdata6。txtThisislinenumber1。Thisislinenumber2。Thisislinenumber3。Thisislinenumber4。sed3ddata6。txtThisislinenumber1。Thisislinenumber2。Thisislinenumber4。或者通过特定行区间指定,比如删除data6。txt文件内容中的第1、3行:sed2,3ddata6。txtThisislinenumber4。或者通过特殊的文件结尾字符,比如删除data6。txt文件内容中第3行开始的所有的内容:sed3,ddata6。txtThisislinenumber1。Thisislinenumber2。3。4sed实例 查看某段时间内的日志:sedn‘开始时间日期,结束时间日期p’xx。loggrep包含的关键字sedn‘2018062114:30:20,2018062116:12:00p’log。txtgrep‘keyword’时间里有的要用转意字符转意sedn2022102614:27:16,2022102618:27:16pwrapper。loggrepPOST对日志模糊查询sedn‘2022102421,2022102422p’xx。log日志导出sedn‘2019102422:16:21,2019102120:16:58p’all。logyoyo。log 将文本的前三位数截取出来,并加上大括号,去掉后面的全部内容catexample。txt101,JohnDoe,CEO102,JasonSmith,ITManager103,RajReddy,Sysadmin104,AnandRam,Developer105,JaneMiller,SalerManager1。正则表达式的()前要加转义符()2。(〔09〕),。解释:以09开头的0个或多个元素逗号。任意字符出现0次或多次3。1解释:1指的是转义括号所捕获的字符seds(〔09〕),。{1}gexample。txtseds(〔09〕),。{1}gexample。txt{101}{102}{103}{104}{105}深入了解echoabcabcabcseds(ab)c1ababcabcechoabcabcabcseds(ab)c1gabababechoabcabcabcseds(ab)(c)1d2gabdcabdcabdc 去掉注释行和空行(表示空行)i直接编辑文件e多点编辑sedies。g;d 行首添加1,3行首添加sed1,3sg123452345634567456784。awk【擅长对行按要求切割】4。1wak格式说明 awk命令也是逐行扫描文件(从第1行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。 简介:常用来做列数据切分与提取(最擅长取列) 语法: awk〔选项〕脚本命令文件名 awk〔选项〕匹配规则{执行命令}文件名 语法解释: 1。’匹配规则‘:表示从哪个地方开始执行,如:1,3表示第1行到第3行;或者写触发事件:BEGIN、END 2。整个‘脚本命令’是用单引号括起,而其中的‘执行命令’部分需要用大括号{} 3。如果没有指定’执行命令‘,则默认会把匹配的行输出;如果不指定’匹配规则‘,则默认匹配文本中所有的行 选项 含义 Ffs 指定以fs作为输入行的分隔符,awk命令默认分隔符为空格或制表符。 ffile 从脚本文件中读取awk脚本指令,以取代直接在命令行中输入指令。 vvarval 在执行处理过程之前,设置一个变量var,并给其设备初始值为val。 举例: test。txt有N个空白行,就会输出N个Blankline。awk{printBlankline}test。txt 以:分割,筛选以root开头,显示结果每行的第一个字段和第七个阻断awkF:root{print1,7}test。txt4。2awk字段变量 awk的主要特性之一是其处理文本文件中数据的能力,awk在读取一行文本时会用预定义的字段分隔符划分每个数据字段。它会自动给一行中的每个数据元素分配一个变量。 默认情况下,awk会将行按指定要求切割后分配如下变量:0代表整个文本行;1代表文本行中的第1个数据字段;2代表文本行中的第2个数据字段;n代表文本行中的第n个数据字段。 在awk中,默认的字段分隔符是任意的空白字符。awk程序读取文本文件,只显示第1个数据字段的值:catdata2。txtOnelineoftesttext。Twolinesoftesttext。Threelinesoftesttext。awk{print1}data2。txtOneTwoThree可以用F选项手动指定例如:awkF{print1}data2。txt4。3awk脚本命令使用多个命令 awk允许将多条命令组合成一个正常的程序。只要在命令之间放个;分号即可,例如:echoMynameisRichawk{4Cprint0}MynameisChristine也可以分开写awk{4Christineprint0}MynameisChristine 注意:此例中因为没有在命令行中指定文件名,awk程序需要用户输入获得数据,因此当运行这个程序的时候,它会一直等着用户输入文本,此时如果要退出程序,只需按下CtrlD组合键即可。4。4awk从文件中读取程序 跟sed一样,awk允许将脚本命令存储到文件中,然后再在命令行中引用,比如:catawk。sh{print1shomedirectoryis6}awkF:fawk。shetcpasswdrootshomedirectoryisrootbinshomedirectoryisbindaemonshomedirectoryissbinadmshomedirectoryisvaradmlpshomedirectoryisvarspoollpd 注意:在程序文件中,也可以指定多条命令,只要一条命令放一行即可,之间不需要用分号。4。5BEGIN、END关键字 语法:awk〔BEGIN〕{。。}{。。}〔END{。。}〕file BEGIN和END顾名思义,在awk中,BEGIN只在开始处理之前运行一次,END只在结束处理之后运行一次,非常适合用在做一些前置操作时使用,通常求和类初始化值、设定分隔符等经常会用。 和BEGIN关键字相对应,END关键字允许我们指定一些脚本命令,awk会在读完数据后执行它们,例如:catdata3。txtLine1Line2Line3awkBEGIN{printThedata3FileContents:}{print0}data3。txtThedata3FileContents:Line1Line2Line31。求和awkBEGIN{sum0}{sum1}END{printsum}file2。求均值awkBEGIN{sum0}{sum1}END{printsumNR}fileNR为总记录数3。求最大值awkBEGIN{max0}{if(1max)max1}END{printmax} 可以看到,当awk程序打印完文件内容后,才会执行END中的脚本命令。 举例:统计文件行数awkEND{printNR}file。。。4。6awk内置变量 awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。ARGC命令行参数个数ARGV命令行参数排列ENVIRON支持队列中系统环境变量的使用FILENAMEawk浏览的文件名FNR浏览文件的记录数FS设置输入域分隔符,等价于命令行F选项NF浏览记录的域的个数(切割)NR已读的记录数OFS输出域分隔符ORS输出记录分隔符RS控制记录分隔符 实例:统计etcpasswd:文件名,每行的行号,每行的列数,对应的完整行内容:awkF:{printfilename:FILENAME,NR:NR,NF:NF,linecontent:0}etcpasswdfilename:etcpasswd,NR:1,NF:7,linecontent:root:x:0:0:root:root:binbashfilename:etcpasswd,NR:2,NF:7,linecontent:daemon:x:1:1:daemon:usrsbin:binshfilename:etcpasswd,NR:3,NF:7,linecontent:bin:x:2:2:bin:bin:binshfilename:etcpasswd,NR:4,NF:7,linecontent:sys:x:3:3:sys:dev:binsh使用printf替代print,可以让代码更加简洁,易读awkF:{printf(filename:s,linenumber:s,columns:s,linecontent:s,FILENAME,NR,NF,0)}etcpasswd 注意:命令结尾的路径是绝对路径打印以分隔后,数量5的第一段字符awkFNF5{print1}test看命令自己翻译awkFNF4NF5{print1}test4。7awk自定义变量和赋值 除了awk的内置变量,awk还可以自定义变量。统计etcpasswd的账户人数,0打印一整行awk{print0;}END{printusercountis,count}etcpasswdroot:x:0:0:root:root:binbash。。。。。。usercountis40 count是自定义变量。之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开。这里没有初始化count,虽然默认是0,但是妥当的做法还是初始化为0awkBEGIN{count0;print〔start〕usercountis,count}{countcount1;print0;}END{print〔end〕usercountis,count}etcpasswd〔start〕usercountis0root:x:0:0:root:root:binbash。。。〔end〕usercountis40 统计某个文件夹下的文件占用的字节数lslawkBEGIN{size0;}{sizesize5;}END{print〔end〕sizeis,size}〔end〕sizeis8657198如果以M为单位显示:lslawkBEGIN{size0;}{sizesize5;}END{print〔end〕sizeis,size10241024,M}〔end〕sizeis8。25889M 注意:lsl,会罗列出所有文件的信息,默认以空格分个,5正好是字节大小。统计不包括文件夹的子目录5。regex 正则就是用有限的符号,表达无限的序列 5。1匹配字符。匹配任意单个字符,不能匹配空行〔〕匹配指定范围内的任意单个字符,〔09azAZ〕、〔azAZ〕、〔AZ〕、〔az〕〔09〕以09开头〔09〕以09结尾〔〕取反 5。2配置次数匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配。任意长度的任意字符,不包括0次?匹配其前面的字符0或1次匹配其前面的字符至少1次{n}匹配前面的字符n次{m,n}匹配前面的字符至少m次,至多n次{,n}匹配前面的字符至多n次{n,}匹配前面的字符至少n次 注意:{}在正则表达式中需要转意,而{}()不需要。 5。3出现位置行首锚定,用于模式的最左侧行尾锚定,用于模式的最右侧PATTERN,用于模式匹配整行空行〔〔:space:〕〕。空白行或b词首锚定,用于单词模式的左侧或b词尾锚定;用于单词模式的右侧 5。4转意字符 是转移字符,其后面的字符会代表不同的意思,常用的转意字符: 转移字符 含义 匹配换行符 r 匹配回车符 匹配制表符 w 匹配任意一个数字、字母、下划线 W 匹配非数字、字母、下划线的任意一个字符(特殊字符) d 匹配数子字符09 D 匹配非数字字符!09 匹配 5。5选择表达式 正则中用来表示分组,ab表示匹配a或者b的意思123456789匹配123或456或789 5。6分组与引用 引用的语法是数字,数字代表引用前面第几个捕获分组(括号中的匹配),注意非捕获分组不能被引用 表示转意字符(〔az〕)1可以匹配spanspan或等 实例:catc。txtabcabccabcccabccccaaaacyyycc?匹配其前面的字符0或1次(匹配的是ABC出现的次数)grepabc?c。txtabcabccabcccabccccabccccc匹配其前面的字符至少1次(匹配的是ABC出现的次数)grepabcc。txtabcabccabcccabccccabcccccgrepcc。txtabcabccabcccabccccabcccccacyyycc前面字符至少出现过3次grepc{3,}c。txtabcccabccccabccccc以a开头grepac。txtabcabccabcccabccccabcccccaaaac以c结尾grepc34;c。txtabcabccabcccabccccabcccccacyyycc匹配y开头,c结尾的字符是转意字符grepy。c。txtyyycc