生物信息学基础教程第4讲:正则表达式教程

正则表达式java  时间:2021-02-19  阅读:()

——正则表达式与模式匹配本节内容正则表达式正则表达式的定义与表示方法正则表达式中的元字符(metacharacter)VIM编辑器grep命令sed编辑器awk工具正则表达式所谓正则表达式(regularexpression,RE),指的是符合某种模式的字串,常用于从文件中或者字符串中查找和替换某些符合某种规则的字串VIM教程——linux下最常用的文本编辑器VIM编辑器三种模式:各种模式之间切换从命令行模式到插入模式:按下i键从命令行模式到附加模式:按下a键返回命令行模式:按下ESC键退出编辑保存并退出:在命令行模式按下:wq不保存退出:在命令行模式按下:q!
保存:在命令行模式按下:w另存为其他文件名:按下:wfilenameVIM编辑功能光标跳到文件头:命令行模式下按2下g光标跳到文件尾:按下:$光标跳到行首:按下^光标跳到行末:按下$跳到100行:按下100gVIM查找功能底行模式下输入/pattern/回车,对应符合pattern的文本就会显示为高亮底行模式下输入:m,n/pattern/,就会在第m行到第n行查找pattern并高亮显示grep教程——正则表达式的应用grep简介是Globalsearchregularexpression(RE)andPrintouttheline的缩写强大的文本搜索工具,使用正则表达式搜索文本,并打印匹配的行在一个或者多个文件中搜索字符串模式,搜索的结果输出到屏幕,不影响文件内容grep用法grep[option]'pattern'input_files常用grep命令选项--line-number,在匹配行前打印行号-n--silent,不显示错误信息-s--revert-match,只显示不匹配的行-v--word-regexp,如果被\引用,就把表达式作为一个单词搜索-w打印不匹配模式的文件清单-l仅打印匹配模式的文件清单-l--quiet,取消显示-q--ignore-case,忽略大小写-i从输入文件中提取模式-ffile--count,只打印匹配行的行数,而不输出匹配行-cgrep-2'grep'test.
txt同时显示匹配行的前后2行为数值,同时显示匹配行的前后行-grep正则表达式元字符匹配所有单个(非)字母和数字字符\w=[A-Za-z0-9]\W=[^A-Za-z0-9]只匹配单词grep,不匹配egrep等\bgrep\bx正好重复5次的行、至少重复5次的行、重复次数在5-10次之间的行x\{5\},x\{5,\},x\{5,10\}'\'匹配以grep结束的单词分别锚定一个单词的起始和结束\'\(love\)'中可以匹配love,且love被标记为\1标记匹配字符\(\)'[^A-FH-Z]rep'匹配所有不在A-F和H-Z范围内字符后跟rep的行匹配不在指定范围内的一个字符[^]'[Gg]rep'匹配包含Grep或grep的行匹配一个指定范围的字符[]'*grep'匹配所有0个或多个空格紧跟grep的行匹配0个或多个先前字符*'gr.
p'匹配gr后跟一个任意字符,后为p的行匹配一个非换行符的任意字符.
'grep$'匹配所有以grep结束的行锚定行的结束$'^grep'匹配所有以grep开始的行锚定行的开始^练习题:这些命令都能干啥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'\'datafilesed教程——非交互性文本编辑sed简介首先用whichsed查看一下sed的位置一个非交互性文本编辑器,编辑文件或标准输入导出的文件拷贝sed可以随意编辑小文件或者大文件一次性处理所有改变,高效率通过行号和正则表达式指定需要编辑的行sed用法从文件的一个文本行或标准输入中读取数据,并将其拷贝到一个编辑缓冲区读取命令行或者脚本的第一条命令,并用该命令查找模式或定位行号并编辑,重复过程直到命令结束sed[option]'sed_command'input_filesed[option]–fsed_script_fileinput_filesed_script_file[option]input_filesed命令的选项其后加sed脚本文件-f下一命令是编辑命令,使用多项编辑时加入此选项-eQuiet,不自动打印编辑行,默认是打印的-nsed定位行号的方法指定x-y范围的行x,y查询不包含指定行号x和y的行x,y!
查询包含该模式的行/pattern/从第x行开始,每隔y行x~y行号,指定某一行x基本sed编辑命令sed's/name/"my"&/wtemp2.
txt'temp.
txt写文本到另一个文件wsed'/name/rtemp2.
txt'temp.
txt从另一个文本中读取文本rsed's/source/okstr/"addbefore"&/p'temp.
txt用替换模式替换相应模式ssed'4\c"ilikeit"'temp.
txt用新文本替换定位文本c\sed'/movie/ntemp2.
txt'temp.
txt从另一个文本中读取下一行,并附加到下一行nsed'/music/'dtemp.
txt删除定位行dsed'4\i"hereaddnewline"'ptemp.
txt在定位行号后插入新文本i\sed'/jack/\a"hereaddnewline"'ptemp.
txt在定位行号后附加新文本a\sed–e'/music/='temp.
txt显示文件行号=sed–n'2,3'ptest.
txtsed–n'/movie/'ptemp.
txt打印匹配行p练习题:这些命令能干什么sed's/^\///g'temp.
txtsed's/COL\(…\)//g'temp.
txtsed's/^.
//g'temp.
txtsed'/^$/d'temp.
txtsed's/g'temp.
txtsed's/g'temp.
txtsed's/*//g'temp.
txtsed–e'/abcd/d'temp.
txtsed's/\.
$//g'temp.
txtAWK教程——文件模式提取教程AWK简介Linux下的awk有三个版本:awk、nawk、gawk,一般所说的awk是指/bin/awk,也就是gawk(GNUawk)awk的功能:基于指定规则从文件或者字符串中分解抽提信息基于指定的规则输出数据awk的三种执行方式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)执行脚本awk脚本的组成可由一条或多条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模块是可选的awk脚本的运行机制如果存在BEGIN区块,执行其中的actions从输入文件中读取一行,称为读入一条记录将读入的记录按照分隔符(FS/IFS)分割为多个字段,依次为$1,$2,….
,而$0表示整条记录.
将当前输入记录与awk_pattern相比较,如果匹配则执行actions,如果不匹配则跳过读入下一条记录,重复执行3,4,直到文件尾awk把输入文件的数据读入内存,然后操作内存中的输入数据副本,不会修改输入文件的内容awk总是输出到标准输出,如果需要输出到文件,可采用重定向awk_pattern的格式正则表达式/regexp/通用的正则元字符:是awk特有的元字符,匹配其前的单个字符一次以上也是awk特有的元字符,匹配其前的单字符0/1次举例:awk'/*\$0\.
[0-9][0-9].
*/'input_file布尔表达式regexp/举例awk'$3~/[^d]/'input_fileawk'($110){print"ok"}'input_fileactions的格式actions是对awk读取记录进行的操作actions由一条或多条语句或命令组成,语句之间用分号分隔awk命令print"$1=",$1printf:与c语言的printf类似next:读取下一条记录并处理nextfile:读取文件列表的下一个文件exit:awk停止执行并跳出.
如果有END存在,awk会执行END的actionsawk语句赋值语句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的剩余部分,而立刻进行下一次循环的执行awk内部变量自动内部变量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}'awk自定义变量定义变量:varname=value表达式中不带引号的字符串即被视为变量,如果之前未被赋值,默认值为0或""用法:awk'awk_script'awkvar1=value1awkvar2=value2.
.
.
.
input_file优先级:awk_script中的变量定义优先于命令行中的变量定义如果需要调用shell变量,可以采用awk'awk_script'awkvar1=shellvar1awkvar2=shellvar2.
.
.
.
input_fileawk内置函数数值函数: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)awk自定义函数自定义函数格式:functionfun_name(param_list){function_body}举例:awk'{print"sum=",SquareSum($1,$2)}functionSquareSum(x,y){sum=x*x+y*y;returnsum}'grade.
txtawk数组访问数组元素for(elementinarray_name)printarray_name[element]举例:awk'BEGIN{printsplit("123#456#789",mya,"#");for(iinmya){printmya[i]}}'避免awk错误的方法①确保整个awk_script用单引号括起来②确保awk_script内所有引号成对出现③确保用花括号括起动作语句,用圆括号括起条件语句④可能忘记使用花括号,也许你认为没有必要,但awk不这样认为,将按之解释语法⑤如果使用字符串,一定要保证字符串被双引号括起来(在模式中除外)2)在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:\\为反斜线符号awk的输出函数printf①格式:printf("输出模板字符串",参数列表)②参数列表是以逗号分隔的列表,参数可以是变量、数值或字符串.
③输出模板字符串的字符串中必须包含格式控制符,有几个参数就要求有几个格式控制符.
模板字符串中可以只有格式控制符而没有其它字符.

2022年腾讯云新春采购季代金券提前领 领取满减优惠券和域名优惠

2022年春节假期陆续结束,根据惯例在春节之后各大云服务商会继续开始一年的促销活动。今年二月中旬会开启新春采购季的活动,我们已经看到腾讯云商家在春节期间已经有预告活动。当时已经看到有抢先优惠促销活动,目前我们企业和个人可以领取腾讯云代金券满减活动,以及企业用户可以领取域名优惠低至.COM域名1元。 直达链接 - 腾讯云新春采购活动抢先看活动时间:2022年1月20日至2022年2月15日我们可以在...

腾讯云CVM云服务器大硬盘方案400GB和800GB数据盘方案

最近看到群里的不少网友在搭建大数据内容网站,内容量有百万篇幅,包括图片可能有超过50GB,如果一台服务器有需要多个站点的话,那肯定默认的服务器50GB存储空间是不够用的。如果单独在购买数据盘会成本提高不少。这里我们看到腾讯云促销活动中有2款带大数据盘的套餐还是比较实惠的,一台是400GB数据盘,一台是800GB数据盘,适合他们的大数据网站。 直达链接 - 腾讯云 大数据盘套餐服务器这里我们看到当前...

哪个好Vultr搬瓦工和Vultr97%,搬瓦工和Vultr全方位比较!

搬瓦工和Vultr哪个好?搬瓦工和Vultr都是非常火爆的国外VPS,可以说是国内网友买的最多的两家,那么搬瓦工和Vultr哪个好?如果要选择VPS,首先我们要考虑成本、服务器质量以及产品的售后服务。老玩家都知道目前在国内最受欢迎的国外VPS服务商vultr和搬瓦工口碑都很不错。搬瓦工和Vultr哪个稳定?搬瓦工和Vultr哪个速度快?为了回答这些问题,本文从线路、速度、功能、售后等多方面对比这两...

正则表达式java为你推荐
windows优化大师怎么用windows优化大师怎么用啊?依赖注入依赖注入到底是为了解决什么问题的二叉树遍历写出二叉树的先序遍历、中序遍历、后序遍历。数码资源网有什么网站弄相片效果比较好的?今日热点怎么删除千牛里面的今日热点怎么取消_?镜像文件是什么什么叫镜像文件,作用是什么?办公协同软件免费的多人协同办公软件哪些,我了解的有钉钉、企业微信,其他的还有么?网易公开课怎么下载网易公开课的视频该如何下载?直播加速怎么让已拍摄好的视频加速免费免费建站可以不用钱免费做一个网站吗
net主机 vps.net blackfriday isatap 20g硬盘 免费网站监控 debian6 租空间 韩国网名大全 165邮箱 lol台服官网 世界测速 linux服务器维护 Updog 域名dns 网站加速软件 主机管理系统 开心online 美国代理服务器 godaddy退款 更多