生物信息學(xué)基礎(chǔ)教程第4講正則表達(dá)式教程市公開(kāi)課一等獎(jiǎng)百校聯(lián)賽優(yōu)質(zhì)課金獎(jiǎng)名師賽課獲獎(jiǎng)?wù)n件_第1頁(yè)
生物信息學(xué)基礎(chǔ)教程第4講正則表達(dá)式教程市公開(kāi)課一等獎(jiǎng)百校聯(lián)賽優(yōu)質(zhì)課金獎(jiǎng)名師賽課獲獎(jiǎng)?wù)n件_第2頁(yè)
生物信息學(xué)基礎(chǔ)教程第4講正則表達(dá)式教程市公開(kāi)課一等獎(jiǎng)百校聯(lián)賽優(yōu)質(zhì)課金獎(jiǎng)名師賽課獲獎(jiǎng)?wù)n件_第3頁(yè)
生物信息學(xué)基礎(chǔ)教程第4講正則表達(dá)式教程市公開(kāi)課一等獎(jiǎng)百校聯(lián)賽優(yōu)質(zhì)課金獎(jiǎng)名師賽課獲獎(jiǎng)?wù)n件_第4頁(yè)
生物信息學(xué)基礎(chǔ)教程第4講正則表達(dá)式教程市公開(kāi)課一等獎(jiǎng)百校聯(lián)賽優(yōu)質(zhì)課金獎(jiǎng)名師賽課獲獎(jiǎng)?wù)n件_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

生物信息學(xué)基礎(chǔ)教程

第4講:正則表示式教程——正則表示式與模式匹配1/38本節(jié)內(nèi)容正則表示式正則表示式定義與表示方法正則表示式中元字符(metacharacter)VIM編輯器grep命令sed編輯器awk工具2/38正則表示式所謂正則表示式(regularexpression,RE),指是符合某種模式字串,慣用于從文件中或者字符串中查找和替換一些符合某種規(guī)則字串3/38VIM教程——linux下最慣用文本編輯器4/38VIM編輯器三種模式:各種模式之間切換從命令行模式到插入模式:按下i鍵從命令行模式到附加模式:按下a鍵返回命令行模式:按下ESC鍵退出編輯保留并退出:在命令行模式按下:wq不保留退出:在命令行模式按下:q!保留:在命令行模式按下:w另存為其它文件名:按下:wfilename5/38VIM編輯功效光標(biāo)跳到文件頭:命令行模式下按2下g光標(biāo)跳到文件尾:按下:$光標(biāo)跳到行首:按下^光標(biāo)跳到行末:按下$跳到100行:按下100g6/38VIM查找功效底行模式下輸入/pattern/回車,對(duì)應(yīng)符合pattern文本就會(huì)顯示為高亮底行模式下輸入:m,n/pattern/,就會(huì)在第m行到第n行查找pattern并高亮顯示7/38grep教程——正則表示式應(yīng)用8/38grep介紹是Globalsearchregularexpression(RE)andPrintouttheline縮寫強(qiáng)大文本搜索工具,使用正則表示式搜索文本,并打印匹配行在一個(gè)或者多個(gè)文件中搜索字符串模式,搜索結(jié)果輸出到屏幕,不影響文件內(nèi)容9/38grep使用方法grep[option]‘pattern’input_files10/38慣用grep命令選項(xiàng)-??為數(shù)值,同時(shí)顯示匹配行前后?行g(shù)rep-2‘grep’test.txt同時(shí)顯示匹配行前后2行-c--count,只打印匹配行行數(shù),而不輸出匹配行-ffile從輸入文件中提取模式-i--ignore-case,忽略大小寫-q--quiet,取消顯示-l僅打印匹配模式文件清單-l打印不匹配模式文件清單-n--line-number,在匹配行前打印行號(hào)-s--silent,不顯示錯(cuò)誤信息-v--revert-match,只顯示不匹配行-w--word-regexp,假如被\<和\>引用,就把表示式作為一個(gè)單詞搜索11/38grep正則表示式元字符^錨定行開(kāi)始‘^grep’匹配全部以grep開(kāi)始行$錨定行結(jié)束‘grep$’匹配全部以grep結(jié)束行.匹配一個(gè)非換行符任意字符‘gr.p’匹配gr后跟一個(gè)任意字符,后為p行*匹配0個(gè)或多個(gè)先前字符‘*grep’匹配全部0個(gè)或多個(gè)空格緊跟grep行[]匹配一個(gè)指定范圍字符‘[Gg]rep’匹配包含Grep或grep行[^]匹配不在指定范圍內(nèi)一個(gè)字符‘[^A-FH-Z]rep’匹配全部不在A-F和H-Z范圍內(nèi)字符后跟rep行\(zhòng)(\)標(biāo)識(shí)匹配字符‘\(love\)’中能夠匹配love,且love被標(biāo)識(shí)為\1\<\>分別錨定一個(gè)單詞起始和結(jié)束‘\<grep’匹配以grep開(kāi)始單詞‘grep\>’匹配以grep結(jié)束單詞x\{5\},x\{5,\},x\{5,10\}x恰好重復(fù)5次行、最少重復(fù)5次行、重復(fù)次數(shù)在5-10次之間行\(zhòng)w=[A-Za-z0-9]\W=[^A-Za-z0-9]匹配全部單個(gè)(非)字母和數(shù)字字符\bgrep\b只匹配單詞grep,不匹配egrep等12/38練習(xí)題:這些命令都能干啥?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位置一個(gè)非交互性文本編輯器,編輯文件或標(biāo)準(zhǔn)輸入導(dǎo)出文件拷貝sed能夠隨意編輯小文件或者大文件一次性處理全部改變,高效率經(jīng)過(guò)行號(hào)和正則表示式指定需要編輯行15/38sed使用方法從文件一個(gè)文本行或標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù),并將其拷貝到一個(gè)編輯緩沖區(qū)讀取命令行或者腳本第一條命令,并用該命令查找模式或定位行號(hào)并編輯,重復(fù)過(guò)程直到命令結(jié)束sed[option]‘sed_command’input_filesed[option]–fsed_script_fileinput_filesed_script_file[option]input_file16/38sed命令選項(xiàng)-nQuiet,不自動(dòng)打印編輯行,默認(rèn)是打印-e下一命令是編輯命令,使用多項(xiàng)編輯時(shí)加入此選項(xiàng)-f其后加sed腳本文件17/38sed定位行號(hào)方法x行號(hào),指定某一行x,y指定x-y范圍行x~y從第x行開(kāi)始,每隔y行/pattern/查詢包含該模式行x,y!查詢不包含指定行號(hào)x和y行18/38基本sed編輯命令p打印匹配行sed–n‘2,3’ptest.txtsed–n‘/movie/’ptemp.txt=顯示文件行號(hào)sed–e‘/music/=’temp.txta\在定位行號(hào)后附加新文本sed‘/jack/\a“hereaddnewline”’ptemp.txti\在定位行號(hào)后插入新文本sed‘4\i“hereaddnewline”’ptemp.txtd刪除定位行sed‘/music/’dtemp.txtn從另一個(gè)文本中讀取下一行,并附加到下一行sed‘/movie/ntemp2.txt’temp.txtc\用新文本替換定位文本sed‘4\c“ilikeit”’temp.txts用替換模式替換對(duì)應(yīng)模式sed‘s/source/okstr/”addbefore”&/p’temp.txtr從另一個(gè)文本中讀取文本sed‘/name/rtemp2.txt’temp.txtw寫文本到另一個(gè)文件sed‘s/name/”my”&/wtemp2.txt’temp.txt19/38練習(xí)題:這些命令能干什么?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有三個(gè)版本:awk、nawk、gawk,普通所說(shuō)awk是指/bin/awk,也就是gawk(GNUawk)awk功效:基于指定規(guī)則從文件或者字符串中分解抽提信息基于指定規(guī)則輸出數(shù)據(jù)22/38awk三種執(zhí)行方式awk[option]‘a(chǎn)wk_script’input_file1[input_file2…]

將awk_script放入腳本文件并以#!/bin/awk–f作為首行,并賦予該腳本可執(zhí)行權(quán)限,然后在shell下調(diào)用該腳本名稱執(zhí)行awk_script內(nèi)容:awk_fileinput_file將全部awk_script放入一個(gè)單獨(dú)腳本文件,然后用awk–fawk_fileinput_file(s)執(zhí)行腳本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腳本運(yùn)行機(jī)制假如存在BEGIN區(qū)塊,執(zhí)行其中actions從輸入文件中讀取一行,稱為讀入一條統(tǒng)計(jì)將讀入統(tǒng)計(jì)按照分隔符(FS/IFS)分割為多個(gè)字段,依次為$1,$2,….,而$0表示整條統(tǒng)計(jì)。將當(dāng)前輸入統(tǒng)計(jì)與awk_pattern相比較,假如匹配則執(zhí)行actions,假如不匹配則跳過(guò)讀入下一條統(tǒng)計(jì),重復(fù)執(zhí)行3,4,直到文件尾awk把輸入文件數(shù)據(jù)讀入內(nèi)存,然后操作內(nèi)存中輸入數(shù)據(jù)副本,不會(huì)修改輸入文件內(nèi)容awk總是輸出到標(biāo)準(zhǔn)輸出,假如需要輸出到文件,可采取重定向25/38awk_pattern格式正則表示式/regexp/通用正則元字符:[]^$.|()*+是awk特有元字符,匹配其前單個(gè)字符一次以上?也是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是對(duì)awk讀取統(tǒng)計(jì)進(jìn)行操作actions由一條或多條語(yǔ)句或命令組成,語(yǔ)句之間用分號(hào)分隔27/38awk命令print“$1=”,$1printf:與c語(yǔ)言printf類似next:讀取下一條統(tǒng)計(jì)并處理nextfile:讀取文件列表下一個(gè)文件exit:awk停頓執(zhí)行并跳出。假如有END存在,awk會(huì)執(zhí)行ENDactions28/38awk語(yǔ)句賦值語(yǔ)句awk'BEGIN{x=1;y=3;x=y;print"x="x";y="y}‘a(chǎn)wk'BEGIN{x=3;x+=2;y=x+2;print"x="x";y="y}'

流程控制結(jié)構(gòu)①if(condition){then-body}[else{else-body}]②while(condition){body}③do{body}while(condition)④for(initialization;condition;increment){body}與C語(yǔ)言for結(jié)構(gòu)語(yǔ)法相同⑤break:跳出包含它for、while、do-while循環(huán)⑥continue:跳過(guò)for、while、do-while循環(huán)body剩下部分,而立刻進(jìn)行下一次循環(huán)執(zhí)行29/38awk內(nèi)部變量自動(dòng)內(nèi)部變量NF:當(dāng)前輸入字段字段數(shù)NR:當(dāng)前輸入文件已經(jīng)被讀過(guò)行數(shù)FNR:全部輸入文件中已經(jīng)被讀過(guò)行數(shù)FILENAME:當(dāng)前輸入文件文件名ARGC:命令行參數(shù)個(gè)數(shù),輸入文件數(shù)目+1ARGIND:當(dāng)前處理文件在ARGV內(nèi)索引字段變量:$1,$2,…,$NF,$0其它內(nèi)部變量FS:輸入統(tǒng)計(jì)字段分隔符(默認(rèn)是空格和制表符)OFS:輸出統(tǒng)計(jì)字段分隔符(默認(rèn)是空格)OFMT:數(shù)字輸出格式(默認(rèn)是%.6g)RS:輸入統(tǒng)計(jì)間分隔符(默認(rèn)是NEWLINE)ORS:輸出統(tǒng)計(jì)間分隔符(默認(rèn)是NEWLINE)ARGV:命令行參數(shù)數(shù)組ENVIRON:存放系統(tǒng)當(dāng)前環(huán)境變量值數(shù)組,它每個(gè)組員索引就是一個(gè)環(huán)境變量名舉例:cat/etc/passwd|awk'BEGIN{FS=":"}{print"Username:"$1,"UID:"$4}'

30/38awk自定義變量定義變量:varname=value表示式中不帶引號(hào)字符串即被視為變量,假如之前未被賦值,默認(rèn)值為0或“”使用方法:awk'awk_script'awkvar1=value1awkvar2=value2....input_file

優(yōu)先級(jí):awk_script中變量定義優(yōu)先于命令行中變量定義假如需要調(diào)用shell變量,能夠采取awk'awk_script'awkvar1=shellvar1awkvar2=shellvar2....input_file

31/38awk內(nèi)置函數(shù)數(shù)值函數(shù):int(x),sqrt(x),exp(x),log(x),sin(x),cos(x),atan2(y,x),rand(),srand(x),srand()字符串函數(shù):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)系統(tǒng)函數(shù):close(filename),system(command)32/38awk自定義函數(shù)自定義函數(shù)格式:functionfun_name(param_list){function_body}舉例:awk‘{print“sum=”,SquareSum($1,$2)}functionSquareSum(x,y){sum=x*x+y*y;returnsum}’grade.txt33/38awk數(shù)組訪問(wèn)數(shù)組元素for(elementinarray_name)printarray_name[element]

舉例:awk‘BEGIN{printsplit(“123#456#789”,mya,“#”);for(iinmya){printmya[i]}}’34/38防止awk錯(cuò)誤方法①確保整個(gè)awk_script用單引號(hào)括起來(lái)②確保awk_script內(nèi)全部引號(hào)成對(duì)出現(xiàn)③確保用花括號(hào)括起動(dòng)作語(yǔ)句,用圓括號(hào)括起條件語(yǔ)句④可能忘記使用花括號(hào),可能你認(rèn)為沒(méi)有必要,但awk不這么認(rèn)為,將按之解釋語(yǔ)法⑤假如使用字符串,一定要確保字符串被雙引號(hào)括起來(lái)(在模式中除外)

35/382)在awk中,設(shè)置有意義變量名是一個(gè)好習(xí)慣,在進(jìn)行模式匹配或關(guān)系操作時(shí)更輕易了解。普通變量名設(shè)置方式為name=$n3)通常在BEGIN部分給一些變量賦值是很有益,這么能夠在awk表示式進(jìn)行改動(dòng)時(shí)降低很多麻煩4)awk基本功效是依據(jù)指定規(guī)則抽取輸入數(shù)據(jù)部分內(nèi)容并輸出,另一個(gè)主要功效是對(duì)輸入數(shù)據(jù)進(jìn)行分析運(yùn)算得到新數(shù)據(jù)并輸出,這是經(jīng)過(guò)在awk_script中對(duì)字段變量($1、$2、$3...)重新賦值或使用更大字段變量$n(n大于當(dāng)前統(tǒng)計(jì)NF)而實(shí)現(xiàn)5)使用字符串或正則表示式時(shí),有時(shí)需要在輸出中加入一新行或查詢一元字符。這時(shí)就需要字符串屏蔽序列。awk中經(jīng)常使用屏蔽序列有:\b退格鍵\ttab鍵\f走紙換頁(yè)\ddd八進(jìn)制值\n新行\(zhòng)r回車鍵\c任意其它特殊字符。eg:\\為反斜線符號(hào)36/38awk輸出函數(shù)printf①格式:printf("輸出模板字符串",參數(shù)列表)②參數(shù)列表是以逗號(hào)分隔列表,參數(shù)能夠是變量、數(shù)值或字符串。③輸出模板字符串字符串中必須包

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論