grep:文本過濾器,如果僅僅是過濾文本,可使用grep,其效率要比其他的高很多;
sed:Stream EDitor,流編輯器,默認只處理模式空間,不處理原數據,如果你處理的數據是針對行進行處理的,可以使用sed;
sed(關鍵字: 編輯) 以行為單位的文本編輯工具 sed可以直接修改檔案, 不過一般不推薦這么做, 可以分析 standard input
基本工作方式: sed [-nef] '[動作]' [輸入文本]
a\ : 在當前行后添加一行或多行。多行時除最后一行外,每行末尾需用“\”續行
c\ :用此符號后的新文本替換當前行中的文本。多行時除最后一行外,每⾏末尾需用”\"續行
i\ :在當前行之前插入文本。多行時除最后一行外,每行末尾需用”\"續行刪除行
h : 把模式空間里的內容復制到暫存緩沖區
H : 把模式空間里的內容追加到暫存緩沖區
g : 把暫存緩沖區里的內容復制到模式空間,覆蓋原有的內容
G: 把暫存緩沖區的內容追加到模式空間⾥,追加在原有內容的后面
l : 列出非打印字符
p : 打印行
q : 結束或退出sed
r : 從文件中讀取輸入行
! : 對所選行以外的所有行應用命令
s : 用一個字符串替換另一個
g : 在行內進行全局替換
w : 將所選的行寫入文件
x : 交換暫存緩沖區與模式空間的內容
y : 將字符替換為另一字符(不能對正則表達式使用y命令)
選項
-e : 進行多項編輯,即對輸入行應用多條sed命令時使用
-n : 取消默認的輸出
-f :指定sed腳本的文件名
示例:

awk
sed以行為單位處理文件,awk比sed強的地方在於不僅能以行為單位還能以列為單位處理文件。 awk缺省的行分隔符是換行,缺省的列分隔符是連續的空格和Tab,
但是行分隔符和列分隔符都可以自定義,比如/etc/passwd文件的每一行有干個字段,字段之間以:分隔,就可以重新定義awk的列分隔符為:並以列為單位處理這個文件。
awk實際上是一門很復雜的腳本語言,還有像C語言一樣的分支和循環結構,但是基本語法和sed類似,awk命令行的基本形式為:
awk option 'script' file1 file2 ...
awk option -f scriptfile file1 file2 ...
和sed一樣,awk處理的文件既可以由標准輸入重定向得到,也可以當命令行參數傳入,編輯命令可以直接當命令行參數傳入,也可以用-f參數指定一個腳本文件,
編輯命令的格式為:
/pattern/{actions}
和sed類似,pattern是正則表達式,actions是一系列操作。 awk程序一行一行讀出待處理文件,如果某一行與pattern匹配,或者滿足condition條件,
則執行相應的actions,如果一條awk命令只有actions部分,則actions作用於待處理文件的每一行。
示例:

注:
$0:表示當前行
$1:表示當前行的第一列
$2:表示當前行的第二列
