第八周筆記

awk 文本三劍客之一,文本處理工具

awk分為Gawk Pawk Dawk Centos用的是Gawk
模式掃描處理的語言
/user/bin/awk awk的路徑

awk的使用語法
awk [選項] `program` var=value file…..(變量賦值)
awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file… -f 調用語言文件
awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }’ file …
awk 程序通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊,共3部
分組成
program通常是被單引號或雙引號中

選項:
-F 指明輸入時用到的字段分隔符
-v var=value: 自定義變量

行: 記錄record 定義分隔符 一個分隔符算一行 (分隔符自定義 默認是空格)
列:字段 或者 域field 或者 屬性 分割符之前的任意分開的算一個字段

基本格式: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;… }語句塊中的語句 BEGIN經常用于處理表頭(開始)
? 第二步:從文件或標準輸入(stdin)讀取一行,然后執行pattern{ action;… }語句塊,它
逐行掃描文件,從第一行到最后一行重復這個過程,直到文件全部被讀取完畢。
? 第三步:當讀至輸入流末尾時,執行END{action;…}語句塊 end做匯總用
? BEGIN語句塊在awk開始從輸入流中讀取行之前被執行,這是一個可選的語句塊,比如
變量初始化、打印輸出表格的表頭等語句通??梢詫懺贐EGIN語句塊中
? END語句塊在awk從輸入流中讀取完所有的行之后即被執行,比如打印所有行的分析
結果這類信息匯總都是在END語句塊中完成,它也是一個可選語句塊
? pattern語句塊中的通用命令是最重要的部分,也是可選的。如果沒有提供pattern語句
塊,則默認執行{ print } ,即打印每一個讀取到的行,awk讀取的每一行都會執行該語句塊

print格式: print item1, item2, …
? 要點:
(1) 逗號分隔符
(2) 輸出的各item可以字符串,也可以是數值;當前記錄的字段、變量或awk的表達式
(3) 如省略item,相當于print $0
示例:
awk ‘{print “hello,awk”}’

awk –F: ‘{print}’ /etc/passwd
awk –F: ‘{print “wang”}’ /etc/passwd
awk –F: ‘{print $1}’ /etc/passwd
awk –F: ‘{print $0}’ /etc/passwd
awk –F: ‘{print $1”\t”$3}’ /etc/passwd (\t)tab鍵 用換行符作為分割符
tail –3 /etc/fstab |awk ‘{print $2,$4}’ 倒數三行的$2$4字段

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99003

(0)
胖噠胖噠
上一篇 2018-05-20
下一篇 2018-05-20

相關推薦

欧美性久久久久