生物信息學(xué)基礎(chǔ)教程第4講正則表達式教程_第1頁
生物信息學(xué)基礎(chǔ)教程第4講正則表達式教程_第2頁
生物信息學(xué)基礎(chǔ)教程第4講正則表達式教程_第3頁
生物信息學(xué)基礎(chǔ)教程第4講正則表達式教程_第4頁
生物信息學(xué)基礎(chǔ)教程第4講正則表達式教程_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、生物信息學(xué)基礎(chǔ)教程第4講:正則表達式教程正則表達式與模式匹配1本節(jié)內(nèi)容正則表達式正則表達式的定義與表示方法正則表達式中的元字符(metacharacter)VIM編輯器grep命令sed編輯器awk工具2正則表達式所謂正則表達式(regular expression, RE), 指的是符合某種模式的字串,常用于從文件中或者字符串中查找和替換某些符合某種規(guī)則的字串3VIM教程linux下最常用的文本編輯器4VIM編輯器三種模式:各種模式之間切換從命令行模式到插入模式:按下i鍵從命令行模式到附加模式:按下a鍵返回命令行模式:按下ESC鍵退出編輯保存并退出:在命令行模式按下:wq不保存退出:在命令行

2、模式按下:q!保存:在命令行模式按下:w另存為其他文件名:按下:w 5VIM編輯功能光標(biāo)跳到文件頭:命令行模式下按2下g光標(biāo)跳到文件尾:按下:$光標(biāo)跳到行首:按下光標(biāo)跳到行末:按下$跳到100行:按下100g6VIM查找功能底行模式下輸入/pattern/回車,對應(yīng)符合pattern的文本就會顯示為高亮底行模式下輸入:m,n/pattern/,就會在第m行到第n行查找pattern并高亮顯示7grep教程正則表達式的應(yīng)用8grep簡介是Global search regular expression (RE) and Print out the line的縮寫強大的文本搜索工具,使用正則表達式

3、搜索文本,并打印匹配的行在一個或者多個文件中搜索字符串模式,搜索的結(jié)果輸出到屏幕,不影響文件內(nèi)容9grep用法grep option pattern input_files10常用grep命令選項11grep正則表達式元字符錨定行的開始grep匹配所有以grep開始的行$錨定行的結(jié)束grep$匹配所有以grep結(jié)束的行.匹配一個非換行符的任意字符gr.p匹配gr后跟一個任意字符,后為p的行*匹配0個或多個先前字符*grep匹配所有0個或多個空格緊跟grep的行匹配一個指定范圍的字符Ggrep匹配包含Grep或grep的行匹配不在指定范圍內(nèi)的一個字符A-FH-Zrep匹配所有不在A-F和H-Z范

4、圍內(nèi)字符后跟rep的行( )標(biāo)記匹配字符(love)中可以匹配love,且love被標(biāo)記為1分別錨定一個單詞的起始和結(jié)束匹配以grep結(jié)束的單詞x5, x5,,x5,10 x正好重復(fù)5次的行、至少重復(fù)5次的行、重復(fù)次數(shù)在5-10次之間的行w = A-Za-z0-9W=A-Za-z0-9匹配所有單個(非)字母和數(shù)字字符bgrepb只匹配單詞grep,不匹配egrep等12練習(xí)題:這些命令都能干啥?ls l | grep agrep test d*grep test aa bb ccgrep a-z5 aagrep w(es)t.*1 aagrep n datafilegrep 4$ datafi

5、legrep 5. datafilegrep .5 datafilegrep wesn datafilegrep A-ZA-Z A-Z datafilegrep ss* datafilegrep a-z9 datafilegrep datafile13sed教程非交互性文本編輯14sed簡介首先用which sed查看一下sed的位置一個非交互性文本編輯器,編輯文件或標(biāo)準(zhǔn)輸入導(dǎo)出的文件拷貝sed可以隨意編輯小文件或者大文件一次性處理所有改變,高效率通過行號和正則表達式指定需要編輯的行15sed用法從文件的一個文本行或標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù),并將其拷貝到一個編輯緩沖區(qū)讀取命令行或者腳本的第一條命令,

6、并用該命令查找模式或定位行號并編輯,重復(fù)過程直到命令結(jié)束sed option sed_command input_filesed option f sed_script_sed_script_file option input_file16sed命令的選項-nQuiet, 不自動打印編輯行,默認是打印的-e下一命令是編輯命令,使用多項編輯時加入此選項-f其后加sed腳本文件17sed定位行號的方法 x行號,指定某一行 x, y指定x-y范圍的行 xy從第x行開始,每隔y行 /pattern/查詢包含該模式的行 x,y!查詢不包含指定行號x和y的行18基本sed編輯命令p打印匹配行sed n 2

7、,3p test.txtsed n /movie/p temp.txt=顯示文件行號sed e /music/= temp.txta在定位行號后附加新文本sed /jack/ a “here add new line”p temp.txti在定位行號后插入新文本sed 4 i “here add new line”p temp.txtd刪除定位行sed /music/d temp.txtn從另一個文本中讀取下一行,并附加到下一行sed /movie/n temp2.txt temp.txtc用新文本替換定位文本sed 4 c “i like it” temp.txts用替換模式替換相應(yīng)模式se

8、d s/source/okstr/”add before” &/p temp.txtr從另一個文本中讀取文本sed /name/r temp2.txt temp.txtw寫文本到另一個文件sed s/name/”my ” &/w temp2.txt temp.txt19練習(xí)題:這些命令能干什么?20AWK教程文件模式提取教程21AWK簡介Linux下的awk有三個版本:awk、nawk、gawk,一般所說的awk是指/bin/awk,也就是gawk (GNU awk)awk的功能:基于指定規(guī)則從文件或者字符串中分解抽提信息基于指定的規(guī)則輸出數(shù)據(jù)22awk的三種執(zhí)行方式awk option aw

9、k_script input_file1 input_file2 將awk_script放入腳本文件并以#!/bin/awk f 作為首行,并賦予該腳本可執(zhí)行權(quán)限,然后在shell下調(diào)用該腳本名稱執(zhí)行awk_script的內(nèi)容:awk_file input_file將所有awk_script放入一個單獨的腳本文件,然后用awk f awk_file input_file(s)執(zhí)行腳本23awk腳本的組成可由一條或多條awk_cmd組成,兩條awk_cmd之間一般以NEWLINE分割awk_cmd由兩部分組成:awk_pattern actions awk命令的一般形式awk BEGIN act

10、ions awk_pattern1 actions awk_patternN actions END actions input_file其中BEGIN 和END模塊是可選的24awk腳本的運行機制如果存在BEGIN區(qū)塊,執(zhí)行其中的actions從輸入文件中讀取一行,稱為讀入一條記錄將讀入的記錄按照分隔符(FS/IFS)分割為多個字段,依次為$1,$2,., 而$0表示整條記錄。將當(dāng)前輸入記錄與awk_pattern相比較,如果匹配則執(zhí)行actions,如果不匹配則跳過讀入下一條記錄,重復(fù)執(zhí)行3,4,直到文件尾awk把輸入文件的數(shù)據(jù)讀入內(nèi)存,然后操作內(nèi)存中的輸入數(shù)據(jù)副本,不會修改輸入文件的內(nèi)容

11、awk總是輸出到標(biāo)準(zhǔn)輸出,如果需要輸出到文件,可采用重定向25awk_pattern的格式正則表達式 /regexp/通用的正則元字符: $ . | () *+是awk特有的元字符,匹配其前的單個字符一次以上?也是awk特有的元字符,匹配其前的單字符0/1次舉例:awk /*$0.0-90-9.*/ input_file布爾表達式 “=”,“”, “/regexp/”,“&”, “|”舉例awk $3 /d/ input_fileawk ($1 10) print ok input_file 26actions的格式actions是對awk讀取記錄進行的操作actions由一條或多條語句或命令

12、組成,語句之間用分號分隔27awk命令print “$1= ”, $1printf:與c語言的printf類似next:讀取下一條記錄并處理nextfile:讀取文件列表的下一個文件exit:awk停止執(zhí)行并跳出。如果有END存在,awk會執(zhí)行END的actions28awk語句賦值語句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 流程控制結(jié)構(gòu) if (condition) then-body else else-body while (conditi

13、on) body do body while (condition) for (initialization; condition; increment) body 與C語言的for結(jié)構(gòu)的語法相同 break : 跳出包含它的for、while、do-while 循環(huán) continue : 跳過for、while、do-while循環(huán)的body的剩余部分,而立刻進行下一次循環(huán)的執(zhí)行29awk內(nèi)部變量自動內(nèi)部變量NF:當(dāng)前輸入字段的字段數(shù)NR:當(dāng)前輸入文件已經(jīng)被讀過的行數(shù)FNR:所有輸入文件中已經(jīng)被讀過的行數(shù):當(dāng)前輸入文件的文件名ARGC:命令行參數(shù)個數(shù),輸入文件數(shù)目+1ARGIND:當(dāng)前處理文

14、件在ARGV內(nèi)的索引字段變量:$1, $2, , $NF, $0其他內(nèi)部變量FS : 輸入記錄的字段分隔符(默認是空格和制表符) OFS : 輸出記錄的字段分隔符(默認是空格) OFMT : 數(shù)字的輸出格式(默認是 %.6g) RS : 輸入記錄間的分隔符(默認是NEWLINE) ORS : 輸出記錄間的分隔符(默認是NEWLINE) ARGV : 命令行參數(shù)數(shù)組 ENVIRON : 存儲系統(tǒng)當(dāng)前環(huán)境變量值的數(shù)組,它的每個成員的索引就是一個環(huán)境變量名舉例:cat /etc/passwd | awk BEGIN FS=: print User name: $1,UID: $4 30awk自定義變

15、量定義變量:varname=value表達式中不帶引號的字符串即被視為變量,如果之前未被賦值,默認值為0或“”用法:awk awk_script awkvar1=value1 awkvar2=value2 . input_file 優(yōu)先級:awk_script中的變量定義優(yōu)先于命令行中的變量定義如果需要調(diào)用shell變量,可以采用awk awk_script awkvar1=shellvar1 awkvar2=shellvar2 . input_file 31awk內(nèi)置函數(shù)數(shù)值函數(shù):int(x), sqrt(x), exp(x), log(x), sin(x), cos(x), atan2(y

16、,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(), system(command)32awk自定義函數(shù)自定義函數(shù)格式:function fun_name(param_list) function_body 舉例:awk print “sum=”, SquareSum($1

17、, $2) function SquareSum(x,y) sum=x*x+y*y; return sum grade.txt33awk數(shù)組訪問數(shù)組元素for ( element in array_name ) print array_nameelement 舉例:awk BEGINprint split(“123#456#789”, mya, “#”); for ( i in mya ) print myai 34避免awk錯誤的方法 確保整個awk_script用單引號括起來 確保awk_script內(nèi)所有引號成對出現(xiàn) 確保用花括號括起動作語句,用圓括號括起條件語句 可能忘記使用花括號,也

18、許你認為沒有必要,但awk不這樣認為,將按之解釋語法 如果使用字符串,一定要保證字符串被雙引號括起來(在模式中除外) 352) 在awk中,設(shè)置有意義的變量名是一種好習(xí)慣,在進行模式匹配或關(guān)系操作時更容易理解。一般的變量名設(shè)置方式為name=$n3) 通常在BEGIN部分給一些變量賦值是很有益的,這樣可以在awk表達式進行改動時減少很多麻煩4) awk的基本功能是根據(jù)指定規(guī)則抽取輸入數(shù)據(jù)的部分內(nèi)容并輸出,另一個重要的功能是對輸入數(shù)據(jù)進行分析運算得到新的數(shù)據(jù)并輸出,這是通過在 awk_script中對字段變量($1、$2、$3.)重新賦值或使用更大的字段變量$n(n大于當(dāng)前記錄的NF)而實現(xiàn)的5) 使用字符串或正則表達式時,有時需要在輸出中加入一新行或查詢一元字符。這時就需要字符串屏蔽序列。awk中經(jīng)常使用的屏蔽序列有: b 退格鍵 t tab鍵 f 走紙換頁 ddd 八進制值 n 新行 r 回車鍵 c 任意其他特殊字符。eg: 為反斜線符號36awk的輸出函數(shù)printf 格式: printf (輸出模板字符串, 參數(shù)列表) 參數(shù)列表是以逗號分隔的列表,參數(shù)可以是變量、數(shù)值或字符串。 輸出模板字符串的字符串中必須包含格式控

溫馨提示

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

評論

0/150

提交評論