第一部分:Linux命令行
《Linux命令行與shell腳本編程大全》 第一章:初識Linux shell
《Linux命令行與shell腳本編程大全》 第二章:走進shell
《Linux命令行與shell腳本編程大全》 第三章:基本的bash shell命令
《Linux命令行與shell腳本編程大全》 第四章:更多的bash shell命令
《Linux命令行與shell腳本編程大全》 第五章:使用Linux環境變量
《Linux命令行與shell腳本編程大全》 第六章:理解Linux文件權限
《Linux命令行與shell腳本編程大全》 第七章:管理文件系統
《Linux命令行與shell腳本編程大全》 第八章:安裝軟件程序
《Linux命令行與shell腳本編程大全》 第九章:使用編輯器
第二部分:shell腳本編程基礎
《Linux命令行與shell腳本編程大全》 第十章:構建基本腳本
《Linux命令行與shell腳本編程大全》 第十一章:使用結構化命令
《Linux命令行與shell腳本編程大全》 第十二章:更多的結構化命令
《Linux命令行與shell腳本編程大全》 第十三章:處理用戶輸入
《Linux命令行與shell腳本編程大全》 第十四章:呈現數據
《Linux命令行與shell腳本編程大全》 第十五章:控制腳本
第三部分:高級shell編程
《Linux命令行與shell腳本編程大全》 第十六章:創建函數
《Linux命令行與shell腳本編程大全》 第十七章:圖形化桌面上的腳本編程
《Linux命令行與shell腳本編程大全》 第十八章:初識sed和gawk
《Linux命令行與shell腳本編程大全》 第十九章:正則表達式
《Linux命令行與shell腳本編程大全》 第二十章:sed進階
《Linux命令行與shell腳本編程大全》 第二十一章:gawk進階
《Linux命令行與shell腳本編程大全》 第二十二章:使用其他shell
第四部分:高級shell腳本編程主題
《Linux命令行與shell腳本編程大全》 第二十三章:使用數據庫
《Linux命令行與shell腳本編程大全》 第二十四章:使用Web
《Linux命令行與shell腳本編程大全》 第二十五章:使用E-mail
《Linux命令行與shell腳本編程大全》 第二十六章:編寫腳本實用工具
《Linux命令行與shell腳本編程大全》 第二十七章:shell腳本編程進階
第十九章:正則表達式
由於之前我已經寫過比較詳盡的正則教程
深入入門正則表達式(java) - 1 - 入門基礎
深入入門正則表達式(java) - 2 - 基本實例
深入入門正則表達式(java) - 3 - 正則在java中的使用
深入入門正則表達式(java) - 匹配原理 - 1 - 引擎分類與普適原則
深入入門正則表達式(java) - 匹配原理 - 2 - 回溯
並且在Unix & Linux 大學教程中的第20章也有筆記,所以這裏筆記較爲簡略,一些簡單的示例在這裏就不在演示了。
什麼是正則表達式
定義
正則表達式類型
Linux中,有兩種流行的正則表達式引擎:
1.POSIX基本正則表達式(BRE)引擎
2.POSIX擴展正則表達式(ERE)引擎
大多數Linux工具至少符合BRE引擎規範,能夠識別所有模式和符號。
一些工具,比如sed只實現了BRE引擎規範的子集。gawk實現了ERE引擎。
定義BRE模式
純文本
特殊字符
斜線(/)不是正則的元字符,但是在sed和gawk中使用,也需要轉義
錨字符
下面利用錨點來刪除空白行
$ cat test.txt
A:11221133
B:44115522
line 5
$ sed '/^$/d' test.txt
A:11221133
B:44115522
line 5
(並不是所有程序都可以這麼幹的)點字符
字符組
排除字符組
使用區間
特殊字符組
BRE特殊字符組
類 | 含義 | 類似於 |
[[:lower:]] | 小寫字母 | a-z |
[[:upper:]] | 大寫字母 | A-Z |
[[:alpha:]] | 大小寫字母 | a-zA-Z |
[[:alnum:]] | 大小寫字母、數字 | a-zA-Z0-9 |
[[:digit:]] | 數字 | 0-9 |
[[:punct:]] | 標點符號 | -- |
[[:print:]] | 匹配任意可打印字符 | -- |
[[:blank:]] | 空格或製表符(空白符) | -- |
[[:space:]] | 匹配任意空白字符 | 空格、製表符、NL、FF、VT和CR |
一個簡單的示例:
$ cat test.txt
A:11221133
B:44115522
line 5
$ sed -n '/[[:digit:]]/p' test.txt
A:11221133
B:44115522
line 5
這裏使用\d是無效的
星號
擴展正則表達式
問號
加號
花括號
警告:默認情況下,gawk不識別表達式區間,必須指定--re-interval選項
注意:gawk只支持下面幾種形式
{m},{m,n},{m,}
並不支持{,m}
管道符號
聚合表達式
實用中的正則表達式
目錄文件計數
也和書中一樣,我們統計$PATH中的目錄含有的文件數目。
其實這裏關鍵的就是把$PATH裏的目錄變成數組參數而已。
下面是書中的例子,不過這個例子是有問題的:
$ echo $PATH | sed 's/:/ /g'
代碼很容易理解。環境變量PATH中的目錄是用冒號分割的,現在利用sed,改爲空格分割路徑,這樣就可以直接對此使用循環了。
但是,PATH中的目錄是允許重複的!也就是說,你可以把同一個目錄多次的加入到這個變量中(雖然這麼做沒有半點好處),當然,很有可能是其他軟件設置的PATH與你自己設置的重複了。不管怎樣,我們是不需要重複統計的。
下面是修正後的代碼:
echo $PATH | sed 's/:/\n/g' | sort | uniq
這裏用換行替換冒號,這樣也能直接對此結果使用循環。這麼做的好處就是,我們可以使用sort然後使用uniq去重複
驗證電話號碼
解析郵件地址
關於正則更多內容,可以參考我之前的寫的教程,裏面有詳盡的正則基礎講解以及示例。
深入入門正則表達式(java) - 1 - 入門基礎
深入入門正則表達式(java) - 2 - 基本實例
深入入門正則表達式(java) - 3 - 正則在java中的使用
深入入門正則表達式(java) - 匹配原理 - 1 - 引擎分類與普適原則
深入入門正則表達式(java) - 匹配原理 - 2 - 回溯
《Unix & Linux 大學教程》 - 第二十章 正則表達式
轉貼請保留以下鏈接
本人blog地址