1. 程式人生 > >文本編輯awk的一些初略認知

文本編輯awk的一些初略認知

定義 標準 ons {} inb 表達式 標準輸入 var 一個

awk介紹
awk:Aho, Weinberger, Kernighan,報告生成器,格式化文本輸出
有多種版本:New awk(nawk),GNU awk( gawk)(一般默認是gawk)
gawk:模式掃描和處理語言
基本用法:
選項 ‘ 處理方式‘ 文件
awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file…
處理文本前執行 處理文本的模式 處理完文本後執行
awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }‘ file ...
awk 程序通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊,共3部
分組成
program通常是被單引號或雙引號中
選項:
-F 指明輸入時用到的字段分隔符
-v var=value: 自定義變量
awk語言
基本格式:awk [options] ‘program‘ file…
program:pattern{action statements;..}
pattern和action:
? pattern部分決定動作語句何時觸發及觸發事件
BEGIN,END
? action statements對數據進行處理,放在{}內指明
print, printf
分割符、域和記錄
? awk執行時,由分隔符分隔的字段(域)標記$1,$2..$n稱為
域標識。$0為所有域,註意:和shell中變量$符含義不同
? 文件的每一行稱為記錄
? 省略action,則默認執行 print $0 的操作(即是默認以回車結束的一行)
awk工作原理
第一步:執行BEGIN{action;… }語句塊中的語句
第二步:從文件或標準輸入(stdin)讀取一行,然後執行
pattern{ action;… }語句塊,它逐行掃描文件,從第一行到最後一
行重復這個過程,直到文件全部被讀取完畢。
第三步:當讀至輸入流末尾時,執行END{action;…}語句塊
BEGIN語句塊在awk開始從輸入流中讀取行之前被執行,這是一個
可選的語句塊,比如變量初始化、打印輸出表格的表頭等語句通常
可以寫在BEGIN語句塊中
END語句塊在awk從輸入流中讀取完所有的行之後即被執行,比如
打印所有行的分析結果這類信息匯總都是在END語句塊中完成,它
也是一個可選語句塊
pattern語句塊中的通用命令是最重要的部分,也是可選的。如果沒
有提供pattern語句塊,則默認執行{ print } ,即打印每一個讀取到的
行,awk讀取的每一行都會執行該語句塊
awk
print格式: print item1, item2, ...
要點:
(1) 逗號分隔符
?(2) 輸出的各item可以字符串,也可以是數值;當前記錄的字段、變量或awk的表達式
?(3) 如省略item,相當於print $0
示例:
awk ‘{print "hello,awk"}‘ 輸出就是hello,awk
awk –F: ‘{print}‘ /etc/passwd 將passwd的每一個以回車的行用:進行分割

文本編輯awk的一些初略認知