awk
思維:基於模式動作形式,在動作前指定特定的模式,使動作在記錄滿足模式時才執行。
基本概念:
1、模式和動作:
模式:即觸發動作的條件
,模式部分決定動作何時觸發及觸發事件。
可以是:
a 條件語句
if($4=="green") b
復合語句
and (&&
)、or(||
)、!
c 正規表示式
awk '$0 ~/[gg]reen/ ' grade.txt
動作:對資料進行的操作。
動作必須用
{}括起來 2
、域和記錄: 域:
awk將標準輸入的每一行按照分隔符分成
n個域,依次為
$1,$2,$3,…,$n
要輸出域採用
語句,輸出所有域使用
$0.
判斷awk
語句錯誤的一些依據: 1
)、確保整個
awk命令用單引號括起來;
2)、確保命令內的所有
引號成對出現;
3)、確保用花括號括起動作語句,用圓括號括起條件語句;
重點知識點:1、
awk輸出報頭和報尾及格式化輸出。
begin end
採用print
語句格式輸出
例如:awk 'begin end ' grade.txt
name belt
----------------------
m.tansley 05/99 48311 green 8 40 44
j.lulu 06/99 48317 green 9 24 26
p.bunny 02/99 48 yellow 12 35 28
j.troll 07/99 4842 brow-3 12 26 26
l.tansley 05/99 4712 brow-3 12 30 28
end-of-report
tom@svr:~/ssh$
begin:
設定計數和列印頭
end:用來在a w k完成文字瀏覽動作後列印輸出文字總數和結尾狀態標誌 2
、使用正規表示式~
1)列印第
4個域值為
green
和green的行
tom@svr:~/ssh$ awk '' grade.txt
m.tansley 05/99 48311 green 8 40 44
j.lulu 06/99 48317 green 9 24 26
tom@svr:~/ssh$ 2
)列印第
4個域值非
green
和green
的行!~
tom@svr:~/ssh$ awk '' grade.txt
p.bunny 02/99 48 yellow 12 35 28
j.troll 07/99 4842 brow-3 12 26 26
l.tansley 05/99 4712 brow-3 12 30 28
tom@svr:~/ssh$
3)匹配行中出現有特定字元的行
,省去了
if條件
tom@svr:~/ssh$ awk '$0 ~/[gg]reen/ ' grade.txt
m.tansley 05/99 48311 green 8 40 44
j.lulu 06/99 48317 green 9 24 26
tom@svr:~/ssh$
3、條件表示式
完全匹配某字串==
tom@svr:~/ssh$ awk '' grade.txt
m.tansley 05/99 48311 green 8 40 44
tom@svr:~/ssh$
不可寫成:
awk 'if($4=="green") ' grade.txt
if條件是動作的一部分,必須與動作寫在乙個花括號內。
awk內建變數: nr
:已讀的記錄數 nf
:瀏覽記錄的域個數
filename: awk
瀏覽的檔名
awk一次可以瀏覽多個檔案
tom@svr:~/ssh$ awk '' grade.txt
m.tansley 05/99 48311 green 8 40 44
j.lulu 06/99 48317 green 9 24 26
tom@svr:~/ssh$
awk工具使用
awk是乙個非常強大的文字報告生成器,用於輸出格式化文字輸出。awk 是由aho,weinberger,kernighan三個人名命名 基本用法 swk options program file program pattern 語句之間用分號分隔 選項 f 指明輸入時用到的字段分隔符 v var v...
awk工具使用
awk 是一種 樣式掃瞄和處理語言 它允許您建立簡短的程式,這些程式讀取輸入檔案 為資料排序 處理資料 對輸入執行計算以及生成報表。它的名稱取自於它的創始人 alfred aho peter weinberger 和 brian kernighan 姓氏的首個字母。本文論述的 awk 命令主要指 l...
awk學習筆記
單詞計數 cat filename awk end 排序演算法 bin bash function f while n 1 do f 1 shift done wait 顯示特殊符 var i am a student echo var awk 結果為 am a i student echo var...