文本處理三兄弟(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 19:27
下一篇 2017-04-01 21:19

相關推薦

  • 第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理類命令:cp,mv,rm 常用的使用方法: cp命令: 單源復制: cp [OPTION]…[-T] SOURCE DEST 多源復制: cp [OPTION]… SOURCE …DIRECTORY cp [OPTION]… …

    Linux干貨 2017-02-06
  • 馬哥教育網絡班N22期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。     [root@zabbix ~]# id $(who | cut -d' ' -f1 | tail -n 1)    &nbs…

    Linux干貨 2016-08-30
  • linux基礎之bash特性知識點

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     Linux 一切皆文件。個人理解 在linux下的命令操作都算是對文件操作     那么文件管理命令類命令可以分為下面幾類     目錄操作: &nbs…

    Linux干貨 2016-09-24
  • Linux發展史

    適用對象:本文適合希望開始學習以及想了解Linux的朋友閱讀。本文中所有內容僅供參考,不作為科學依據。 一、      Linux的起源 最初的計算機其實是具有單一功能的大型計算器,只能完成指定或者設定好的工作。多數情況下計算機資源是處于空閑狀態的,為了不使資源浪費,就需要使計算機能夠或者可以進行多種工作。或…

    Linux干貨 2016-10-14
  • 筆記

    命令 命令列表 alias 別名 bc 計算器 basename文件基本名 cp 復制 cd 進入文件夾 cat /proc/partition 查看硬盤的使用情況 cat /proc/meminfo 查看內存的使用情況 chvt 切換終端 chown改變文件的所屬組 edj:chown -R www /etc/host clock 查詢或設置硬件時間 ch…

    Linux干貨 2017-05-25
  • 高級文件系統管理 之RAID

    高級文件系統管理 之RAID 軟RAID ? mdadm:為軟RAID提供管理界面 ?                 為空余磁盤添加冗余 ?      &nb…

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