unix中的grep家族
grep有三種變形:
??? grep? 標(biāo)準(zhǔn)grep命令
??? egrep?擴(kuò)展grep命令,支持基本及擴(kuò)展的正則表達(dá)式,但不支持\q模式范圍的應(yīng)用
??? fgrep 快速grep命令,允許查找字符串而不是一個模式,不要誤解fast,其實和grep速度相當(dāng)
grep的一般格式:
??? grep [選項] 基本正則表達(dá)式 [文件]?? 這里的基本正則表達(dá)式可為字符
使用雙引號:
??? 字符串參數(shù)最好使用雙引號擴(kuò)起來,一是以防被誤解為shell命令,二是可以用來查找多個單詞組成的字符串,在調(diào)用變量的時候也要使用雙引號,比如grep "$MYVAR",否則無結(jié)果,在調(diào)用模式匹配是,應(yīng)使用單引號
grep的選項:
??? -c 只輸出匹配行的計數(shù),比如grep -c "test" *.txt,將顯示4,則說明包含test的有4行
??? -i 不區(qū)分大小寫(只適用于單字符),比如grep -i "Bank" *.c等同于grep -i "bank" *.c
??? -h 查詢多文件時不顯示文件名
??? -l 查詢多文件時只輸出包含匹配字符的文件名
??? -n 顯示匹配行及行號,在顯示出內(nèi)容的每行前面會顯示行數(shù)
??? -s 不顯示不存在或無匹配文本的錯誤信息
??? -v 顯示不包含匹配文本的所有行,grep?-v "test" abc.txt,將顯示不包含"test"的行內(nèi)容
??? -w?以單詞為單位進(jìn)行匹配
??? -E 允許使用擴(kuò)展模式匹配
grep和正則表達(dá)式:
??? 使用正則表達(dá)式最好使用單引號括起來,避免參數(shù)被做為shell命令執(zhí)行
??? 模式范圍: grep '48[a-z]' *.txt
??? 不匹配行首: grep '^[^48]' *.txt? 查找行首不是48的行內(nèi)容
??? 設(shè)置大小寫: grep '[Ss]ept' *.txt 查找Sept和sept內(nèi)容
??? 匹配任意字符: grep 'K...D' *.txt???? grep '[A-Z][A-Z]..C' *.txt
????"與"和"或": grep -E '219|216' *.txt? 查找包含219或者216的行內(nèi)容
????空行:? grep '^$'?*.txt
????類名:? [[:upper:]]? ->? [A-Z]??????? [[:lower:]]?? ->???[a-z]
????????? [[:digit:]]? ->??[0-9]????????[[:alnum:]]??->? [0-9a-zA-Z]
??????????[[:space:]]? ->? 空格或者tab鍵?? [[:alpha:]]? ->?? [a-zA-Z]
???????grep '5[[:upper:]]' *.txt 等同于?grep '5[A-Z]' *.txt
????列出所有的目錄?? ls -l |grep '^d'?????
??? 列出所有的非目錄?? ls -l?|grep '^[^d]'? 或? ls -l |grep -v '^d'
轉(zhuǎn)載于:https://www.cnblogs.com/fengyuwuzu1980/archive/2009/03/19/1416221.html
總結(jié)
以上是生活随笔為你收集整理的unix中的grep家族的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 权限管理系统设计_多校区的教育培训机构,
- 下一篇: android shape画边框,安卓用