grep (global search regular expression and print out the line) 全面搜索正則表達式並把匹配的行打印出來 , 是一種很強大的文本搜索工具, egre 是 grep 的擴展, 支持更多的 re 元字符, 還有fgrep 是把全部的字母當作單詞, 也就是說正則表達式中的元字符表示晦氣自生的字面意義, 不在特殊, linux 使用的是 GUN 版本的 grep, 能夠經過 -G, -E, -F 命令來使用 egrep 和 fgrep 的功能linux
語法: grep [OPTIONS]
nginx
選項git
-a: --text 不忽略二進制的數據 -A<N>: --after-context=<N> 除了顯示匹配到的行外, 還會顯示該行後面的<N>行 -b: --byte-offset 在顯示該行內容前 會列出該列第一個字符在文件中的字符偏移量 -B <N>: --before-context=<N> 顯示匹配到的行, 還會顯示該行前面 <N>行的內容 -c: --count 統計符合匹配的行數 -C<N>: --context=<N> 除了顯示匹配行外, 會顯示該行先後各<N> 行的內容 -d<動做> 指定查找的是目錄而非問阿金時, 必須使用該參數, 不然 grep 會中止動做 -e<範本>: 指定須要做爲查找文件內容的範本. -E --extended-regexp 將範本做爲擴展表示方法來使用, 等同於使用 egrep -f <範本>: 指定範本文件, 其內容包含一個或多個範本, 讓grep 查找符合條件的內容 -F: --fixed-regexp 將範本規則視爲固定字符串的列表 -G: 將範本視爲普通的表示方法來使用 -h: 顯示符合範本樣式的一列前, 不標該列所屬的文件名稱 -H: 顯示符合範本 一列以前, 標識該列所屬文件名稱 -i: 忽略大小寫 -l: 列出內容符合指定範本的文件名 -L: 累出文件內容不符合指定的樣式的文件名稱 -n: 顯示符合樣式的一行以前, 標出該行的 行號 -q: 不顯示任何信息 -r: 此參數的效果和 -d resurce 相同 -s: 不顯示錯誤信息 -v: 顯示不包含匹配文件的全部行 -V: 顯示版本信息 -w: 只顯示全符合的列 -x: l只顯示全列的符合的列 y: 該參數與 -i 相同
\
符號進行轉譯特殊字符.Regular expression(正則表達式) 是由一類特殊字符以及文本字符編寫的模式, 其中某些字符(元字符)具備特殊的含義, 能夠控制或通配功能正則表達式
linux 中經常使用的文本工具都是支持正則表達式的, 好比 grep, sed, awk, vim, less. 某些服務也是支持使用正則做爲匹配方式的, 如 nginx, carnish 幾乎全部的編程語言都是支持使用正則的.express
正則中經常使用元字符來表示一類字符, 而不用直接指明該字符. 經常使用元字符有:編程
^ 以某一個字符(串)爲行首, $ 匹配某個字符爲結尾 . 表示一個任意字符 \b 不會消耗任何字符, 只是匹配一個字符的單詞邊界, 好比 \bis\b 表示一個完整單詞is, 兩側都是空白 \d 匹配數字 \w 匹配字母, 數字, 下劃線 \s 匹配空格, 多個空格可使用 \s+ [] 匹配中括號範圍內的一個內容, 好比 [ab1] 表示只匹配, a或b或1, 可使用 [a-z] 匹配一個範圍 () 將一段表達式, 做爲總體 x|y x或y, | 表示左邊內容或右邊內容 # 幾種反義 \W 匹配非字母,數字,下劃線 \S 匹配非空格字符 \D 匹配任意非數字字符 \B 匹配不是單詞開頭的字符 [^] 匹配非中括號內的內容 # 字符類 [[:alpha:]] 任何字母 [[:digit:]] 任何數字 [[:alnum:]] 任何字母和數字 [[:space:]] 任何空白字符 [[:upper:]] 任何大寫字母 [[:lower:]] 任何小寫字母 [[:punct:]] 任何標點符號 [[:xdigit:]] 任何16進制的數字,至關於[0-9a-fA-F]
* 前一個子表達式出現 0次或者更屢次 + 前一個子表達式出現 1次或更屢次 ? 重複 0次或1次 {n} 重複 n次 {n,} 最少重複 n次 {n,m} 最少重複 n次, 最多m次
sed 是一種流編輯器, 用於處理文本的工具, 可以完美的配合正則表達式使用, 功能很是強大, sed 是非交互式的編輯(編輯過程不須要用戶參與), 使用預設定的指定對文本進行編輯, 完成後輸出結果.vim
語法: sed [opitons] 'command files
數組
選項less
-e <script> 用選中的指定 script 來處理文本文件 -f <script> 使用script 文件來處理文件 -h: 幫助信息 -i [擴展名] 直接修改文件, 若是指定了擴展那名, 則備份文件 -l N: 指定'l' 命令的換行指望週期 -n 不會自動打印所有內容 --posix: 關閉 GUN 擴展 -r: 在腳本中使用 擴展的表達式 -s: 將輸入文件視爲各個獨立的文件, 而不是一個長的連續輸入
a\\ 在當前行下面插入文本 i\\ 當前行上面插入 c\\ 選定的行跟新 d 刪除選擇的行 D 刪除模板的第一行 s 替換指定的字符 h 拷貝模板內容到緩衝區 H 追加模塊內容到緩衝區 g 得到內存緩衝區的內容, 並替換當前模板塊中的文本 G 得到內存緩衝區的內容, 並追加到當前模板塊文本後面 l 列表不能打印字符的清單 n 讀取下一行輸入, 用下一個命令處理新的行 而不是第一個命令 N 追加下一輸入行到模板後面並在兩者之間嵌入一個新行 p 打印模板行 P 打印模板 的第一行 q 退出 sed b lable 分支到腳本帶有標記地方, 若是不存在, 則分支到腳本末尾 r file 從 file 讀取行 t label 錯誤分支, 從最後一行開始, 一旦發生錯誤, 致使分支到標記命令處 w file 寫並追加模板到 file 末尾 W file 寫並追加模板的第一行 到file 末尾 ! 表示某明命令對所選沒有選定的行發生做用 = 打印當前行號 # 把註釋擴展到下一個換行符前面
g 行內全體換 p 打印行 w 把行寫入一個文件 x 表示互換模板中的文本和緩衝區中的文本 y 把一個字符翻譯爲另外一個字符(不用於正則表達式) \\1 子串匹配標記 & 已匹配的字符串
^ 匹配行開始, 如: /^a/ 匹配全部a 開頭的行 $ 匹配行結束 . 任意一個字符 * 匹配 0個或更多個字符 [] 匹配 一個指定範圍內的字符, 如[ab] 表示匹配a或b [^] 匹配指定範圍 外的字符 & 保存搜索的字符串用來替換其餘字符, 如: /abc/--&--/ 會將 abc替換成--abc-- \(\)/\1 後項引用, 如: /s/\(abc\)def/\1XXX/ 這一段會匹配 abcdef 字段, 並將其替換成 abcXXX, 這裏的 \1 就是後項引用了前面的 第一個() 內的內容, \b 匹配單詞邊界, 如\babc\b 表示匹配abc 這個詞 x{n} 匹配 x 字符 出現 n 次 x{n,} 匹配 x 字符, 最少出現 n 次 x{n,m} 匹配 x 字符, 最少出現 n 次, 最多 m 次
awk 是一種便於使用且表達力強的工具, 是一種變成語言, 用於linux/unix 下的文本處理, 數據能夠是來自標準輸出或文件, 支持用戶自定義函數 和正則表達式, 多出場景是做爲腳本內的文本處理工具來使用.編程語言
-語法:
awk [options] 'script' file
awk [options] 'BEGIN{command} partten{ commands } END { commands }' file
經常使用選項
-F fs 指定文件內的分隔符, 能夠指定一個正則表達式 -v 賦值一個用戶定義的變量 -f FILE 從文件中讀取 script 或者直接是一個 awk script 腳本
模式能夠是如下幾種
BEGGIN { commands }
語句塊parttern{ commands }
語句塊END { commands }
語句塊$N 當前記錄的第 N個字段 ARGC 命令行元組數 ARGIND 命令行中當中文件的位置,( 用於處理多文件時, 記錄當前文件的偏移量) CONVFMT 數字轉化格式,(默認 %.6g) ERRNO 最後一個系統錯誤描述 FIELDWIDTHS 字列寬度(用空格分割) FILENAME 當前鍵入的文件名 FNR 當前文件中記錄號 FS 輸入域 的分隔符, 默認是空格 RS 輸入域 記錄分隔符 NF 當前記錄域的個數 NR 目前爲止的記錄數 OFS 輸出域的分隔符 ORS 輸出與的 記錄分割符
END