linux——grep、sed、awk整理及其比较
一、grep、sed、awk 概述
grep:文本過濾器,如果僅僅是過濾文本,可使用grep,其效率要比其他的高很多
sed:Stream EDitor,流編輯器,默認只處理模式空間,不處理原數據,如果你處理的數據是針對行進行處理的,可以使用sed
awk:報告生成器,格式化以后顯示。如果對處理的數據需要生成報告之類的信息,或者你處理的數據是按列進行處理的,最好使用awk
grep
Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。
sed
sed 是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。
awk
awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數據分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。
awk有3個不同版本: awk、nawk和gawk,未作特別說明,一般指gawk,gawk是 AWK的 GNU版本
二、正則表達式基礎
最簡單的情況下,一個正則表達式看著就是一個普通的查找串。例如,正則表達式”file”中沒有包含任何元字符,它可以匹配”file”和”file1”等字符串,但是不能匹配”File”。
要想真正的用好正則表達式,正確的理解元字符是最重要的事情。下表列出了常用元字符和對它們的一個簡短的描述。
| . | 匹配任何單個字符。如:r.t 可以匹配 rot、rpt 等,但不能匹配 root |
| ^ | 匹配一行的開始。如:^you 可以匹配 “you should believe you can” 的開始,但不能匹配 “your firend believe you can” |
| $ | 匹配行結束符。如:bash$,可以匹配末尾是 bash 的字符串,不能匹配末尾是 bash. 的字符串 |
| * | 匹配0或多個正好在它之前的那個字符。例如正則表達式 .* 意味著能夠匹配任意數量的任何字符 |
| \ | 這是轉譯符,用來將后面所跟的元字符當作普通的字符來進行匹配 |
| [ ]、[c1-c2]、[^c1-c2] | 匹配括號中的任何一個字符。可以在括號中使用連字符-來指定字符的區間;還可以制定多個區間;另一個重要的用法是“排除”,要想匹配除了指定區間之外的字符——在左邊的括號和第一個字符之間使用^字符。 |
| | | 將兩個匹配條件進行邏輯“或”(or)運算。注意:這個元字符不是所有的軟件都支持的。 |
| + | 匹配1或多個正好在它之前的那個字符。注意:這個元字符不是所有的軟件都支持的。 |
| ? | 匹配0或1個正好在它之前的那個字符。注意:這個元字符不是所有的軟件都支持的。 |
總結
以上是生活随笔為你收集整理的linux——grep、sed、awk整理及其比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux——编写Shell脚本常用命令
- 下一篇: linux——grep 文本过滤器