三劍客之sed,awk,grep,egrep

Sed是文本處理工具,依賴於正則表達式,能夠讀取文本內容,根據指定條件對數據進行添加、刪除、替換等操做,普遍應用於shell腳本,以完成自動化處理任務。
Sed在處理數據時默認不直接修改源文件,而是把當前處理的行存儲在臨時緩衝區中,全部指令都在緩衝區中操做,處理完成後,把緩衝區內容默認輸出到屏幕,接着處理下一行內容,這樣不斷重複,直到文件末尾,文件自己內容並無作任何改變。

1、Sed三大功能:
(1)讀取:sed 從輸入流(文件、管道、標準輸入)中讀取一行內容並存儲到臨時的緩衝區中;
(2)執行:默認狀況下,全部的 sed 命令都在模式空間中順序地執行,除非指定了行的地址,不然 sed 命令將會在全部的行上依次執行;
(3)顯示:發送修改後的內容到輸出流,再發送數據後,模式空間將會被清空。
***注意:默認狀況下,全部的 sed 命令都是在模式空間內執行的,所以輸入的文件並不會發生任何變化,除非是用重定向存儲輸出。
2、Sed命令兩種格式:
其中,「參數」是指操做的目標文件,當存在多個操做對象時用,文件之間用逗號「,」分隔;而 scriptfile 表示腳本文件,須要用「-f」選項指定,當腳本文件出如今目標文件以前時,表示經過指定的腳本文件來處理輸入的目標文件。正則表達式

sed [選項] ‘操做’ 參數
sed [選項] -f scriptfile 參數shell

(1)常見的 sed命令選項:

-e :表示用指定命令或者腳原本處理輸入的文本文件;
-f :表示用指定的腳本文件來處理輸入的文本文件;
-h :顯示幫助;
-n :表示僅顯示處理後的結果;
-i :直接編輯文本文件;ide

(2)常見的操做選項:工具

a:增長,在當前行下面增長一行指定內容;
c:替換,將選定行替換爲指定內容;
d:刪除,刪除選定的行;
i :插入,在選定行上面插入一行指定內容;
p:打印,若是同時指定行,表示打印指定行;若是不指定行,則表示打印全部內容,一般與 -n選項一塊兒使用;
s :替換,替換指定字符;
y :字符轉換;命令行

1、awk簡介:
在 Linux/UNIX 系統中,awk 是一個功能強大的編輯工具,逐行讀取輸入文本,並根據指定的匹配模式進行查找,對符合條件的內容進行格式化輸出或者過濾處理,能夠在無交互的狀況下實現至關複雜的文本操做,被普遍應用於 Shell 腳本,完成各類自動化配置任務。
2、常見用法:
單引號加上大括號「{}」用於設置對數據進行的處理動做。awk 能夠直接處理目標文件,也能夠經過「-f」讀取腳本對目標文件進行處理。
awk 將文本文件中的一行視爲一個記錄,而將一行中的某一部分(列)做爲記錄中的一個字(域)。爲了操做這些不一樣的字段,awk 借用 shell 中相似於位置變量的方法, 用$一、$二、$3…順序地表示行(記錄)中的不一樣字段。另外 awk 用$0 表示整個行(記錄)。不一樣的字段之間是經過指定的字符分隔。awk 默認的分隔符是空格。awk 容許在命令行中用「-F 分隔符」的形式來指定分隔符。code

awk 【選項】‘模式或條件 {編輯指令}’ 文件1 文件2
awk -f 腳本文件 文件1 文件2
1)特殊的內建變量(可直接用)對象

FS:指定每行文本的字段分隔符,默認爲空格或製表位(tab鍵);
NF:當前處理的行的字段個數;
NR:當前處理的行的行號(序數);
$0:當前處理的行的整行內容;
$n:當前處理行的第 n 個字段(第 n 列);
FILENAME:被處理的文件名;
RS:數據記錄分隔,默認爲\n,即每行爲一條記錄;
(2)關係運算符號:只有當條件爲真,才執行指定的動做。
大於(>);小於(<);大於等於(>=);小於等於(<=);
等於(==)、不等於(!=);
&&(與)、||(或)、!(非);
加(+)、減(-)、乘(*)、除(/)、取餘(%)、乘方(^);blog

1、grep命令ip

-n: 表示顯示行號
-i : 表示不區分大小寫刷選
-v : 表示方向查找it

(1)查找特定的字符:
grep -n 'the' abc.txt //查找有the的行,並顯示出行號
1
grep -in ‘the’ abc.txt //不區分大小寫查找有the的行,並顯示行號
1
若是是想查找不包含the的行,-vn選項便可:
grep -vn ‘the’ abc.txt //查找不包括the的行,並顯示出行號
1
(2)中括號 [ ] 查找集合字符:
例如:當咱們須要查找兩個字符 「aboyz」 和 「abiyz」 這兩個字符時,其中ab和yz都是相同的,能夠利用 [ ]來匹配字符,[ ]中不論有幾個字符,都僅表明一個字符,
元字符
三劍客之sed,awk,grep,egrep

相關文章
相關標籤/搜索