文本處理三兄弟(grep,sed,awk)

linux文本處理三劍客:

grep:文本過濾工具

grep  egrep=grep -e  fgrep

sed:流編輯器  處理多個行 

awk:文本編輯工具,格式化工具

grep [OPTIONS] PATTERN [FILE…] :

文本處理搜索工具,根據用戶指定的“模式”對目標文本進行匹配檢查;打印匹配到的行

選項:

  • –color=auto: 對匹配到的文本著色顯示
  • -v: 顯示不被pattern匹配到的行
  • -i: 忽略字符大小寫
  • -n: 顯示匹配的行號
  • -c: 統計匹配的行數
  • -o: 僅顯示匹配到的字符串
  • -q: 靜默模式,不輸出任何信息
  • -A #: after, 顯示匹配到的行和后#行
  • -B #: before, 顯示匹配到的行和前#行
  • -C #:context, 顯示匹配到的行和前后各#行
  • -e: 實現多個選項間的邏輯or關系。grep –e ‘cat ’ -e ‘dog’ file
  • -w: 整行匹配整個單詞
  • -E: 使用擴展正則表達式
  • -F: 相當于fgrep,不支持正則表達式

grep命令使用簡單實例
1.顯示所有以d開頭的文件中包含 test的行

$ grep ‘test’ d*

2.顯示在aa,bb,cc文件中匹配test的行。

$ grep ‘test’ aa bb cc

3.顯示所有包含每個字符串至少有5個連續小寫字符的字符串的行。

$ grep ‘[a-z]\{5\}’ aa

4.如果west被匹配,則es就被存儲到內存中,并標記為1,然后搜索任意個字符(.*),這些字符后面緊跟著 另外一個es(\1),找到就顯示該行。

$ grep ‘w\(es\)t.*\1′ aa

如果用egrep或grep -E,就不用”\”號進行轉義,直接寫成’w(es)t.*\1′就可以了。

#有一點要注意,您必需提供一個文件過濾方式(搜索全部文件的話用 *)。如果您忘了,’grep’會一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 <CTRL c> ,然后再試。


sed   [options] ‘command’ file(s)  

sed [options] -f scriptfile file(s)

sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中的內容 ,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變 ,除非你使用重定向存儲輸出。Sed主要用來自動編輯一 個或多個文件,簡化對文件的反復操作,編寫轉換程序等

-n   不輸出模式空間中的內容到屏幕
-e  多點編輯   可以在一個sed命令中  同時處理多個腳本
-f  每行一個編輯命令  sed 腳本
-r   支持擴展的正則表達式
-l   直接編輯原文件
地址定界:
1.空地址:對全文進行處理
2.單地址:
#:指定行;
/pattern/:被此模式所匹配到的行; 注意/ /雙斜線必須寫  這是格式要求

3.地址范圍:
#,#
#,+#
#,/pat1/
/pat1/,/pat2/
4.步進:(隔一行編輯)
1-2:所有的奇數行

2-2:所有的偶數行

編輯命令:
 d: 刪除
p:  顯示模式空間中的內容
a:\text:在行后面追加文本“text”,支持使用\n 實現多行追加
l:\text:在行前面插入文本“text”,支持使用\n實現多行插入     (轉義)
c:\text:把匹配到的行替換為此處指定的文本“text”(替換一整行而不是某一個)O
w: /PATH/TO/SOMEFILE:保存模式空間到的行至指定的文件中
r 把一個文件下的內容添加到所讀的文件中去  文件合并 
比如  sed ‘3r /etc/fstab /etc/passwd
把/passwd這個文件添加到   /fastab中   從第三行開始


= :為模式匹配到的行打印行號
?。簵l件取反  相當于^
地址定界!編輯命令
s///:查找替換,其分隔符可自行指定,常用的有s@@@,s###等
替換標記:
g:全局替換
w /PATH/HOMEFILE :將替換成功的結果保存至指定文件中
p:顯示替換成功的行

高級編輯命令:
h:把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g:把保持空間中的內容覆蓋至模式空間中
G:把保存空間中的內容追加至模式空間中
x:把模式空間中的內容與保持空間中的內容互換
n:覆蓋讀取匹配到的行下一行至模式空間中
N:追加讀取匹配到的行下一行至模式空間中
d:刪除模式空間中的行
D:刪除多行模式空間中的所有行
示例
sed -n ‘n;p FILE :顯示偶數行
sed ‘1!G;h;$!d’ FILE :逆序顯示文件中的內容
sed ‘$!d FILE : 取出最后一行
sed ‘$!N;$!D’ FILE :顯示文件的后兩行
sed ’/^$/d;G FILE :刪除原有的所有的空白行 而后為每一行后面都加上空白行
sed ‘n;d’ FILE :顯示奇數行 
sed ‘G’ FILE :在原有的每行后方添加一個空白行

注意:
sed -i 是直接修改原文件,不是在模式空間 慎重 慎重 慎重

awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數據分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。

原創文章,作者:All well,如若轉載,請注明出處:http://www.www58058.com/72311

(0)
All wellAll well
上一篇 2017-04-01
下一篇 2017-04-01

相關推薦

  • 基礎命令

    1,對于Linux的實驗環境我們要用到虛擬機,往往每次上線都要登錄,這時候如果把用戶設為自動登錄就會方便許多,接下來就介紹下設置虛擬機的自動登錄 , /etc/gdm/custom.conf 這個就是設置自動登錄的一個配置文件,我們先來使用nano打開這個文件,如下 # GDM configuration storage 這是GDM的一個配置存儲 [daem…

    2017-11-19
  • Nginx反向代理原理、壓測及模塊功能的實現

    基本架設 反向代理模塊 緩存功能的實現 修改報文首部IP 向后端轉發時是否讓客戶端知道 在http中定義緩存基本屬性 定義當后端服務宕機時過期緩存生效條件 報文首部模塊,自定義報文首部 負載均衡模塊1 負載均衡模塊2 負載均衡模塊的常用調度方法1 負載均衡常用調度方法2 與http想等的動態負載均衡模塊1 與http想等的動態負載均衡模塊2 這里讓我們對之前…

    2016-10-30
  • GRUB管理

    對于運維人員來說,想要熟練掌握linux,那么久要對linux的啟動流程有一個詳細的了解,而今天我們就一起來學習一下linux啟動中最重要的一個階段——GRUB引導階段。 Linux啟動流程 grup: GRand Unified Bootloader  由上圖可知,grub屬于系統啟動過程中一個必須的階段。而這個階段又分為了三個小的階段,分別是s…

    2017-09-02
  • 創建yum源及httpd源碼編譯

    創建yum源及源碼編譯httpd yum本身相比于rpm來說,能夠將有依賴的包文件一次性的安裝完成,是相當的方便的。 yum的服務器支持的幾種格式: http、https、ftp、file 1、yum基礎命令 1、yum命令 yum [options] [command] [package …] [options]: 基本不用 [command]: re…

    Linux干貨 2017-08-08
  • 第一天心得體會

    初次見面,你好

    2018-03-26
  • 馬哥教育網絡班21期+第7周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@itop ~]# fdisk /dev/sda&nbsp…

    Linux干貨 2016-08-30
欧美性久久久久