您好,登錄后才能下訂單哦!
小編給大家分享一下linux中正則表達式有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1、輔助信息
1.1、文件格式
在Linux上工作,是非常非常排斥二進制這種格式的,幾乎什么都是可以讀寫的文本內容。大多數命令生成的結果,也都是文本文件。這些文件有一些特點,通常列與列都是通過空格或者
[root@localhost ~]# lsmem RANGE SIZE STATE REMOVABLE BLOCK 0x0000000000000000-0x0000000007ffffff 128M online no 0 0x0000000008000000-0x000000000fffffff 128M online yes 1 0x0000000010000000-0x0000000017ffffff 128M online no 2 0x0000000018000000-0x0000000027ffffff 256M online yes 3-4 0x0000000028000000-0x000000004fffffff 640M online no 5-9 0x0000000050000000-0x000000005fffffff 256M online yes 10-11 0x0000000060000000-0x000000007fffffff 512M online no 12-15 Memory block size: 128M Total online memory: 2G Total offline memory: 0B
有一大批針對于行操作的命令,同樣有一批針對于列操作的命令。然后,有兩個集大成者,叫做sed、awk。由于這兩個命令的內容非常多,我們將其列為單獨的章節。
1.2、幫助信息
通常linux命令都十分簡單,但是有些還是有些復雜度的。比如find,ps這種命令,如果要照顧到所有的場合,可能需要非常巨大的篇幅。但是,萬一用到這種偏門的場合怎么辦?
全面了解一下是非常有必要的,以便在使用的時候能夠喚起記憶中最淺顯的印象。然后剩下的,就可以交給類似于man的這種命令了。Linux上的每一個命令,都會有配套的幫助文件,這遠比網絡上那些轉來轉去的信息,正確的多。
正式介紹一下下面的兩個命令:
man 用來顯示某個命令的文檔信息。比如:man ls
info 你可以認為和man是一樣的,雖然有一些能夠互補的內容。它們會在內容中進行提示的
--help 很多命令通過參數--help提供非常簡短的幫助信息。這通常是最有用最快捷的用例展示。如果你根本就記不住一個非常拗口的單詞,那就找找這些地方吧
注意:這些幫助信息,僅集中在命令的作用域本身。對于它的組合使用場景,并沒有過多信息。也就是說,它教會了你怎么用,但并沒有告訴你用它能夠來做什么。
這些幫助命令,一般會通過高亮關鍵字,增加閱讀的體驗。但我們可以更近一步,把幫助文件變成彩色的。在root用戶下,執行下面的命令。然后,重新登錄虛擬機。
cat >> ~/.bashrc <<EOF function man() { env \\ LESS_TERMCAP_mb=\$(printf "\e[1;31m") \\ LESS_TERMCAP_md=\$(printf "\e[1;31m") \\ LESS_TERMCAP_me=\$(printf "\e[0m") \\ LESS_TERMCAP_se=\$(printf "\e[0m") \\ LESS_TERMCAP_so=\$(printf "\e[1;44;33m") \\ LESS_TERMCAP_ue=\$(printf "\e[0m") \\ LESS_TERMCAP_us=\$(printf "\e[1;32m") \\ man "\$@"} EOF
再次執行man命令,就可以看到彩色的信息了。
1.3、TAB補全
現在,在終端里,輸入ca,然后快速按2次
[root@localhost ~]# ca cacertdir_rehash cache_dump cache_repair cache_writeback ca-legacy capsh case catchsegv cache_check cache_metadata_size cache_restore cal caller captoinfo cat catman
如果你對某個命令,只有模糊的印象,只記得前面的幾個字母,這個功能是極好的,命令范圍會一步步縮減。
2、正則表達式
為了開始下面的內容,我們首先介紹一下正則表達式。在前面的一些命令中,也可以使用這些正則表達式,比如less、grep等。
有些書籍,能夠把正則表達式寫成一本書,我們這里僅作簡單的介紹,但足夠用了。一般的,正則表達式能用在匹配上,還能夠把匹配的內容拿來做二次利用。關于后者,我們在sed命令中介紹。
標志 | 意義 | |
---|---|---|
^ | 行首 | |
$ | 行尾 | |
. | 任意單個字符 | |
* | 匹配0個或者多個前面的字符 | |
+ | 1個或者多個匹配 | |
? | 0個或者1個匹配 | |
{m} | 前面的匹配重復m次 | |
{m,n} | 前面的匹配重復m到n次 | |
[] | 匹配一個指定范圍內的字符 | |
[^] | 匹配指定范圍外的任意單個字符 | |
\ | 轉義字符 | |
[0-9] | 匹配括號中的任何一個字符,or的作用 | |
` | ` | or,或者 |
\b | 匹配一個單詞。比如\blucky\b 只匹配單詞lucky |
使用下面的命令創建一個文件,我們練習一下grep命令加上E參數后的正則表現。
cat > 996 <<EOF 996: 996 is a funcking thing . which make woman as man , man as ass . we all on the bus , bus bus on the way . 996 way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer EOF
在終端執行下面命令,注意高亮的部分即為匹配到的字符串。
# 匹配996開頭的行 [root@localhost ~]# cat 996 | grep -E ^996 996: 996 is a funcking thing . which make woman as man , man as ass . # 匹配996結尾的行 [root@localhost ~]# cat 996 | grep -E 996$ we all on the bus , bus bus on the way . 996 # 匹配到icu和icuuuuuu [root@localhost ~]# cat 996 | grep -E icu+ way to icu. icuuuuuu...... # 再次匹配到996 [root@localhost ~]# cat 996 | grep -E [0-9] 996: 996 is a funcking thing . which make woman as man , man as ass . we all on the bus , bus bus on the way . 996 [root@localhost ~]# cat 996 | grep -E ^[\^0-9] we all on the bus , bus bus on the way . 996 way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer # 匹配所有不包含996的行,良心命令,淚奔 [root@localhost ~]# cat 996 | grep -E -v [0-9]{3} way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer # 匹配boss和icu [root@localhost ~]# cat 996 | grep -E boss\|icu way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer # 匹配所有行 [root@localhost ~]# cat 996 | grep -E . 996: 996 is a funcking thing . which make woman as man , man as ass . we all on the bus , bus bus on the way . 996 way to icu. icuuuuuu...... The greedy green boss rides on the pity programmer
正則表達式非常的重要,在一些sed腳本中,awk腳本中,甚至是vim編輯器中,都會簡化你的操作。以上內容應該熟記,達到不需要查找文檔的地步。
以上是“linux中正則表達式有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。