awk筆記

awk基本用法python

基本用法:  
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語言shell

基本格式: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變量spa

 變量:內置和自定義變量 
 FS:輸入字段分隔符,默認爲空白字符  awk -v FS=':'  '{print $1,FS,$3}’ /etc/passwd  awk  –F:   '{print $1,$3,$7}’ /etc/passwd 
 OFS:輸出字段分隔符,默認爲空白字符  awk  -v FS=‘:’  -v OFS=‘:’ '{print $1,$3,$7}’ /etc/passwd 
 RS:輸入記錄分隔符,指定輸入時的換行符  awk -v RS=' ' ‘{print }’ /etc/passwd 
 ORS:輸出記錄分隔符,輸出時用指定符號代替換行符  awk -v RS=' ' -v ORS='###'‘{print }’ /etc/passwd 
 NF:字段數量  awk  -F: ‘{print NF}’ /etc/fstab,引用內置變量不用$  awk  -F:  '{print $(NF-1)}'  /etc/passwd 
 NR:記錄號      awk '{print NR}'  /etc/fstab ; awk END'{print NR}'  /etc/fstab 
FNR:各文件分別計數,記錄號  awk '{print FNR}'  /etc/fstab /etc/inittab 
FILENAME:當前文件名  awk '{print FILENAME}’  /etc/fstab 
ARGC:命令行參數的個數  
    awk '{print ARGC}’  /etc/fstab /etc/inittab  
    awk ‘BEGIN {print ARGC}’  /etc/fstab /etc/inittab 
ARGV:數組,保存的是命令行所給定的各參數  
    awk ‘BEGIN {print ARGV[0]}’  /etc/fstab /etc/inittab  
    awk ‘BEGIN {print ARGV[1]}’  /etc/fstab /etc/inittab

awk自定義變量命令行

自定義變量(區分字符大小寫)  
    (1) -v var=value    
    (2) 在program中直接定義     
示例:  
    (1)awk -v test='hello gawk' '{print test}' /etc/fstab   
    (2)awk -v test='hello gawk' 'BEGIN{print test}'   
    (3)awk 'BEGIN{test="hello,gawk";print test}'   
    (4)awk –F:‘{sex=「male」;print $1,sex,age;age=18}’ /etc/passwd  
    (5)cat awkscript  
    (6){print script,$1,$2}  
    (7)awk -F: -f awkscript script=「awk」 /etc/passwd

awk模式匹配blog

模式匹配符:        
   (1) ~:左邊是否和右邊匹配包含 !~:是否不匹配 
示例:  
    (1)awk –F: '$0 ~ /root/{print $1}‘  /etc/passwd  
    (2)awk '$0~「^root"' /etc/passwd   awk  '$0  !~ /root/‘   /etc/passwd  
    (3)awk  –F: ‘$3==0’  /etc/passwd
相關文章
相關標籤/搜索