Linux正则和grep命令
生活随笔
收集整理的這篇文章主要介紹了
Linux正则和grep命令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 設置命令的默認參數和別名
- 正則表達式
- 元字符
- 數量及各種括號
- grep
- egrep 對grep的增強,支持擴展的表達式
- fgrep,查詢速度比grep快,但不會識別正則表達式,只會原樣搜索字符串。
?
正文
回到頂部
設置命令的默認參數和別名
- 每次都要輸入?ls -l?,煩不煩,我想用?ll?來表示?ls -l, 可以,只要在?~/.bashrc?中加上?alias ll='ls -l'?,然后運行?source ~/.bashrc?來使配置立即生效即可。
回到頂部
正則表達式
- 正則表達式就是有規則的字符串,字符串中有一些特殊字符來表示一定的規則,符合這個規則的字符串就能被匹配上。 如?^the?表示每一行都以the開頭的字符串;?^[^a-zA-Z]?表示所有不以英文字母開頭的行。
元字符
- 所謂元字符,就是這個字符是代表一類字符或這代表某種規則。
- .?對,就是小數點,它代表除換行符外的任意一個字符,注意是一個字符。
- \w?匹配字母數字下劃線和漢子。注意也是匹配一個字符。
- \s?匹配任意一個空白符。
- \d?匹配任意一個數字。
- \b?匹配單詞的開頭或結尾
- ^?匹配行首。
- $?匹配行尾。
- [^x]?匹配任意不是x的字符。
- [^xyz]?匹配任意不是x,y,z的字符。
- 另外linux中大寫字母一般表示小寫字母的相反意義,上面的 w, s, d, b分別有對應的 W, S, D ,B 分別表示它們的相反意思。
數量及各種括號
- *?放在一個字符的后面,表示前面的字符可以出現0次或多次。
- ??同上,但是表示前面的字符可以出現0次或1次。
- +?同上,但是代表前面的字符可以出現1次或多次。
- ()?小括號,里面的看作一個整體,也就是看作一個"字符",*,? + 等修飾整個小括號里面的內容。
- []?中括號,不論里面有多少字符,它僅表示一個字符,如 [abc] 表示字符a 或 字符b或字符c。
- {}?大括號,修飾前面的一個字符,表示該字符出現多少次,如 {2} 表示除2次,{3,} 表示出現3或3次以上,{3,9} 表示出現次數在3到9之間,包括3和9. 注意?{?和?}?前要加轉義符。
- |?或,如?abc \| cde?,匹配包含 abc 或 cde的行。注意?|?之前要加轉義符。
回到頂部
grep
-
grep: global search regular expression (RE). 一種可使用正則進行文本搜索的工具,并把匹配的行打印出來。
示例
- 將 /etc/passwd 沒有出現 root 的行取出來 :?grep -v /etc/passwd?-v?參數就表示相反的意思。
-
在當前目錄及子目錄下遞歸搜索行內有 "important" 的文件 :?grep -r 'important' *
- 在當前目錄及子目錄下遞歸搜索行內有 "important" 的文件,但僅顯示文件名 :?grep -l -r 'important' *
- 搜尋包含 test 或 tast 的行并顯示行號 :?grep -n 't[ae]st' test.txt
- 搜索包含 aa 但是 aa 前面不能是 b 的行:?grep '[^b]aa'
- 搜索所有包含 hi并且hi前面不是小寫字母的行:?grep [^a-z]hi txt3
- 搜索包含數字的行:?grep -n '[0-9]' txt3
- 搜索行首是The的行:?grep -n '^The' txt3
- 搜索行首第一個字母是小寫的行:?grep -n '^[a-z]' txt3
- 搜索行首第一個字符不是字母的行:?grep -n '^[^a-zA-Z]' txt3
- 搜索行尾為小數點的行:grep -n '\.$' txt3?因為小數點是元字符,所以加了轉移字符反斜杠。
- 以?good.?結尾的行:?grep -n 'good.$' txt3
- 找出類似?g??d?的行:?grep -n 'g..d' txt3
-
找出 g后面跟2個或2個以上o的行:?grep -n 'go\{2,\}' txt3?注意大括號要前要加轉義符。
egrep 對grep的增強,支持擴展的表達式
- 搜索所有包含 CN 或 US的行:?egrep -n 'CN|US' txt3?|?就是擴展的元字符,
- 如果使用grep時在擴展的元字符前加反斜杠,grep會自動使用egrep. 如上面的也可寫成:?grep -n 'CN\|US' txt3
- 搜索所有包含1個或多個3的行:egrep -n 'o+' txt3
- 搜索所有包含1個或多個go的行:?egrep -n '(go)+' txt3
fgrep,查詢速度比grep快,但不會識別正則表達式,只會原樣搜索字符串。
- 搜索包含?**?的行:?fgrep -n '**' txt3
來源:https://www.cnblogs.com/imap/p/7608406.html
總結
以上是生活随笔為你收集整理的Linux正则和grep命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php5和php7的bccomp计算精度
- 下一篇: 独木舟(说一说独木舟的简介)