版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
生物信息学基础教程
第4讲:正则表示式教程——正则表示式与模式匹配1/38本节内容正则表示式正则表示式定义与表示方法正则表示式中元字符(metacharacter)VIM编辑器grep命令sed编辑器awk工具2/38正则表示式所谓正则表示式(regularexpression,RE),指是符合某种模式字串,惯用于从文件中或者字符串中查找和替换一些符合某种规则字串3/38VIM教程——linux下最惯用文本编辑器4/38VIM编辑器三种模式:各种模式之间切换从命令行模式到插入模式:按下i键从命令行模式到附加模式:按下a键返回命令行模式:按下ESC键退出编辑保留并退出:在命令行模式按下:wq不保留退出:在命令行模式按下:q!保留:在命令行模式按下:w另存为其它文件名:按下:wfilename5/38VIM编辑功效光标跳到文件头:命令行模式下按2下g光标跳到文件尾:按下:$光标跳到行首:按下^光标跳到行末:按下$跳到100行:按下100g6/38VIM查找功效底行模式下输入/pattern/回车,对应符合pattern文本就会显示为高亮底行模式下输入:m,n/pattern/,就会在第m行到第n行查找pattern并高亮显示7/38grep教程——正则表示式应用8/38grep介绍是Globalsearchregularexpression(RE)andPrintouttheline缩写强大文本搜索工具,使用正则表示式搜索文本,并打印匹配行在一个或者多个文件中搜索字符串模式,搜索结果输出到屏幕,不影响文件内容9/38grep使用方法grep[option]‘pattern’input_files10/38惯用grep命令选项-??为数值,同时显示匹配行前后?行grep-2‘grep’test.txt同时显示匹配行前后2行-c--count,只打印匹配行行数,而不输出匹配行-ffile从输入文件中提取模式-i--ignore-case,忽略大小写-q--quiet,取消显示-l仅打印匹配模式文件清单-l打印不匹配模式文件清单-n--line-number,在匹配行前打印行号-s--silent,不显示错误信息-v--revert-match,只显示不匹配行-w--word-regexp,假如被\<和\>引用,就把表示式作为一个单词搜索11/38grep正则表示式元字符^锚定行开始‘^grep’匹配全部以grep开始行$锚定行结束‘grep$’匹配全部以grep结束行.匹配一个非换行符任意字符‘gr.p’匹配gr后跟一个任意字符,后为p行*匹配0个或多个先前字符‘*grep’匹配全部0个或多个空格紧跟grep行[]匹配一个指定范围字符‘[Gg]rep’匹配包含Grep或grep行[^]匹配不在指定范围内一个字符‘[^A-FH-Z]rep’匹配全部不在A-F和H-Z范围内字符后跟rep行\(\)标识匹配字符‘\(love\)’中能够匹配love,且love被标识为\1\<\>分别锚定一个单词起始和结束‘\<grep’匹配以grep开始单词‘grep\>’匹配以grep结束单词x\{5\},x\{5,\},x\{5,10\}x恰好重复5次行、最少重复5次行、重复次数在5-10次之间行\w=[A-Za-z0-9]\W=[^A-Za-z0-9]匹配全部单个(非)字母和数字字符\bgrep\b只匹配单词grep,不匹配egrep等12/38练习题:这些命令都能干啥?ls–l|grep‘^a’grep‘test’d*grep‘test’aabbccgrep‘[a-z]\{5\}’aagrep‘w\(es\)t.*\1’aagrep‘^n’datafilegrep‘4$’datafilegrep‘5\..’datafilegrep‘\.5’datafilegrep‘^[wesn]’datafilegrep‘[A-Z][A-Z][A-Z]’datafilegrep‘ss*’datafilegrep‘[a-z]\{9\}’datafilegrep‘\<[a-z].*n\>’datafile13/38sed教程——非交互性文本编辑14/38sed介绍首先用whichsed查看一下sed位置一个非交互性文本编辑器,编辑文件或标准输入导出文件拷贝sed能够随意编辑小文件或者大文件一次性处理全部改变,高效率经过行号和正则表示式指定需要编辑行15/38sed使用方法从文件一个文本行或标准输入中读取数据,并将其拷贝到一个编辑缓冲区读取命令行或者脚本第一条命令,并用该命令查找模式或定位行号并编辑,重复过程直到命令结束sed[option]‘sed_command’input_filesed[option]–fsed_script_fileinput_filesed_script_file[option]input_file16/38sed命令选项-nQuiet,不自动打印编辑行,默认是打印-e下一命令是编辑命令,使用多项编辑时加入此选项-f其后加sed脚本文件17/38sed定位行号方法x行号,指定某一行x,y指定x-y范围行x~y从第x行开始,每隔y行/pattern/查询包含该模式行x,y!查询不包含指定行号x和y行18/38基本sed编辑命令p打印匹配行sed–n‘2,3’ptest.txtsed–n‘/movie/’ptemp.txt=显示文件行号sed–e‘/music/=’temp.txta\在定位行号后附加新文本sed‘/jack/\a“hereaddnewline”’ptemp.txti\在定位行号后插入新文本sed‘4\i“hereaddnewline”’ptemp.txtd删除定位行sed‘/music/’dtemp.txtn从另一个文本中读取下一行,并附加到下一行sed‘/movie/ntemp2.txt’temp.txtc\用新文本替换定位文本sed‘4\c“ilikeit”’temp.txts用替换模式替换对应模式sed‘s/source/okstr/”addbefore”&/p’temp.txtr从另一个文本中读取文本sed‘/name/rtemp2.txt’temp.txtw写文本到另一个文件sed‘s/name/”my”&/wtemp2.txt’temp.txt19/38练习题:这些命令能干什么?sed‘s/\.$//g’temp.txtsed–e‘/abcd/d’temp.txtsed‘s/*//g’temp.txtsed‘s/^[][]*//g’temp.txtsed‘s/\.[][]*/[]/g’temp.txtsed‘/^$/d’temp.txtsed‘s/^.//g’temp.txtsed‘s/COL\(…\)//g’temp.txtsed‘s/^\///g’temp.txt20/38AWK教程——文件模式提取教程21/38AWK介绍Linux下awk有三个版本:awk、nawk、gawk,普通所说awk是指/bin/awk,也就是gawk(GNUawk)awk功效:基于指定规则从文件或者字符串中分解抽提信息基于指定规则输出数据22/38awk三种执行方式awk[option]‘awk_script’input_file1[input_file2…]
将awk_script放入脚本文件并以#!/bin/awk–f作为首行,并赋予该脚本可执行权限,然后在shell下调用该脚本名称执行awk_script内容:awk_fileinput_file将全部awk_script放入一个单独脚本文件,然后用awk–fawk_fileinput_file(s)执行脚本23/38awk脚本组成可由一条或多条awk_cmd组成,两条awk_cmd之间普通以NEWLINE分割awk_cmd由两部分组成:awk_pattern{actions}awk命令普通形式awk‘BEGIN{actions}awk_pattern1{actions}…awk_patternN{actions}END{actions}’input_file其中BEGIN和END模块是可选24/38awk脚本运行机制假如存在BEGIN区块,执行其中actions从输入文件中读取一行,称为读入一条统计将读入统计按照分隔符(FS/IFS)分割为多个字段,依次为$1,$2,….,而$0表示整条统计。将当前输入统计与awk_pattern相比较,假如匹配则执行actions,假如不匹配则跳过读入下一条统计,重复执行3,4,直到文件尾awk把输入文件数据读入内存,然后操作内存中输入数据副本,不会修改输入文件内容awk总是输出到标准输出,假如需要输出到文件,可采取重定向25/38awk_pattern格式正则表示式/regexp/通用正则元字符:[]^$.|()*+是awk特有元字符,匹配其前单个字符一次以上?也是awk特有元字符,匹配其前单字符0/1次举例:awk‘/*\$0\.[0-9][0-9].*/’input_file布尔表示式“==”,“>”,“~/regexp/”,“&&”,“||”举例awk‘$3~/[^d]/’input_fileawk'($1<10)&&($2>10){print"ok"}'input_file
26/38actions格式actions是对awk读取统计进行操作actions由一条或多条语句或命令组成,语句之间用分号分隔27/38awk命令print“$1=”,$1printf:与c语言printf类似next:读取下一条统计并处理nextfile:读取文件列表下一个文件exit:awk停顿执行并跳出。假如有END存在,awk会执行ENDactions28/38awk语句赋值语句awk'BEGIN{x=1;y=3;x=y;print"x="x";y="y}‘awk'BEGIN{x=3;x+=2;y=x+2;print"x="x";y="y}'
流程控制结构①if(condition){then-body}[else{else-body}]②while(condition){body}③do{body}while(condition)④for(initialization;condition;increment){body}与C语言for结构语法相同⑤break:跳出包含它for、while、do-while循环⑥continue:跳过for、while、do-while循环body剩下部分,而立刻进行下一次循环执行29/38awk内部变量自动内部变量NF:当前输入字段字段数NR:当前输入文件已经被读过行数FNR:全部输入文件中已经被读过行数FILENAME:当前输入文件文件名ARGC:命令行参数个数,输入文件数目+1ARGIND:当前处理文件在ARGV内索引字段变量:$1,$2,…,$NF,$0其它内部变量FS:输入统计字段分隔符(默认是空格和制表符)OFS:输出统计字段分隔符(默认是空格)OFMT:数字输出格式(默认是%.6g)RS:输入统计间分隔符(默认是NEWLINE)ORS:输出统计间分隔符(默认是NEWLINE)ARGV:命令行参数数组ENVIRON:存放系统当前环境变量值数组,它每个组员索引就是一个环境变量名举例:cat/etc/passwd|awk'BEGIN{FS=":"}{print"Username:"$1,"UID:"$4}'
30/38awk自定义变量定义变量:varname=value表示式中不带引号字符串即被视为变量,假如之前未被赋值,默认值为0或“”使用方法:awk'awk_script'awkvar1=value1awkvar2=value2....input_file
优先级:awk_script中变量定义优先于命令行中变量定义假如需要调用shell变量,能够采取awk'awk_script'awkvar1=shellvar1awkvar2=shellvar2....input_file
31/38awk内置函数数值函数:int(x),sqrt(x),exp(x),log(x),sin(x),cos(x),atan2(y,x),rand(),srand(x),srand()字符串函数:index(in,find),length(s),match(s,r),sprintf(),sub(p,r,t),gsub(p,r,t),substr(str,st,len),split(s,a,fs),tolower(str),toupper(str)系统函数:close(filename),system(command)32/38awk自定义函数自定义函数格式:functionfun_name(param_list){function_body}举例:awk‘{print“sum=”,SquareSum($1,$2)}functionSquareSum(x,y){sum=x*x+y*y;returnsum}’grade.txt33/38awk数组访问数组元素for(elementinarray_name)printarray_name[element]
举例:awk‘BEGIN{printsplit(“123#456#789”,mya,“#”);for(iinmya){printmya[i]}}’34/38防止awk错误方法①确保整个awk_script用单引号括起来②确保awk_script内全部引号成对出现③确保用花括号括起动作语句,用圆括号括起条件语句④可能忘记使用花括号,可能你认为没有必要,但awk不这么认为,将按之解释语法⑤假如使用字符串,一定要确保字符串被双引号括起来(在模式中除外)
35/382)在awk中,设置有意义变量名是一个好习惯,在进行模式匹配或关系操作时更轻易了解。普通变量名设置方式为name=$n3)通常在BEGIN部分给一些变量赋值是很有益,这么能够在awk表示式进行改动时降低很多麻烦4)awk基本功效是依据指定规则抽取输入数据部分内容并输出,另一个主要功效是对输入数据进行分析运算得到新数据并输出,这是经过在awk_script中对字段变量($1、$2、$3...)重新赋值或使用更大字段变量$n(n大于当前统计NF)而实现5)使用字符串或正则表示式时,有时需要在输出中加入一新行或查询一元字符。这时就需要字符串屏蔽序列。awk中经常使用屏蔽序列有:\b退格键\ttab键\f走纸换页\ddd八进制值\n新行\r回车键\c任意其它特殊字符。eg:\\为反斜线符号36/38awk输出函数printf①格式:printf("输出模板字符串",参数列表)②参数列表是以逗号分隔列表,参数能够是变量、数值或字符串。③输出模板字符串字符串中必须包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长治医学院《飞行原理》2025-2026学年期末试卷
- 【 生物 】观察鸡卵的结构课件2025-2026学年人教版八年级下册生物
- 兰陵县中考一模历史试卷
- 国家消防安全员报考指南
- 职工健康关爱知识
- 脑肿瘤治疗建议
- 东北法医职业前景分析
- XX初中2026年学生成长档案袋检查反馈校长通报讲话
- 2024春节禁止燃放烟花爆竹的倡议书范文
- 2023中国成人肠外肠内营养临床指南(第一部分)
- 牙龈疾病-妊娠期龈炎
- GB/T 42609-2023煤粉给料三通换向阀
- 成人机械通气患者俯卧位护理-中华护理学会团体标准
- 年产30万吨合成氨脱碳工段工艺设计
- 优选文档压裂压力诊断PPT
- FZ/T 52010-2014再生涤纶短纤维
- 电力公司新竹区营业处课件
- 建筑废土处置方案
- 医院内部控制手册
- 香蕉组培快繁生产过程
- 新沪教牛津版七年级下册英语Unit 1 More practice-Cultural corner课件
评论
0/150
提交评论