awk編程學(xué)習(xí)筆記基礎(chǔ)篇

awk編程學(xué)習(xí)筆記基礎(chǔ)篇

  1. awk編程的基本框架為:

    BEGIN{} #循環(huán)前部命令

    {} #循環(huán)中,對(duì)于每行進(jìn)行一次循環(huán),包括模式和過程兩個(gè)部分,如果匹配一次模式,則進(jìn)行一次循環(huán)

    END{} #主循環(huán)結(jié)束后的命令

BEGIN模式用于在一個(gè)輸入行讀入之前要執(zhí)行的動(dòng)作

    $awk 'BEGIN {print "Hello,World"}'

awk程序是由所謂的主輸入循環(huán)組成的,當(dāng)沒有其他行讀入時(shí)循環(huán)終止
awk后綴腳本在hadoop集群中 /home/shanjiajun/ 文件夾中

/[0-9] */ {print "that is an integer"} 模式(可以為正則表達(dá)式)+過程

:連續(xù)的兩個(gè)或多個(gè)空格和/或制表符被作為一個(gè)分隔符

  1. FS為系統(tǒng)變量讀入指定域分隔符,OFS為系統(tǒng)變量寫出指定域分隔符,在BEGIN中指定
    BEGIN {FS=",",OFS=","}
  1. awk 腳本的運(yùn)行方法:
腳本 : BEGIN {FS=","}  {print $1","$6}
運(yùn)行 : awk -f phonelist.awk names
  1. awk 編程中所有沒有賦值的變量初始狀態(tài)為0,多行打印用分號(hào)隔開

    NF和NR也為系統(tǒng)變量,分別為字段的數(shù)量和行號(hào),則$NF為最后一個(gè)字段,$(NF-1)為倒數(shù)第二個(gè)字段

    LENGTH為字符串的長度函數(shù)

  2. 邏輯運(yùn)算三種方式 : && || !

例如:

($5!~/MA/) && (NF==6)  {print $0}  #打印第五個(gè)字段不匹配MA字符且字段數(shù)為6的行
  1. print和printf的主要區(qū)別在于printf沒有提供自動(dòng)換行功能,需要加上一個(gè)\n

%s為字符型 %f為浮點(diǎn)型 %d為整型

一個(gè)printf語句表達(dá)式可以規(guī)定輸出欲的寬度和對(duì)齊方式,可以由3個(gè)可選的修飾符組成,跟在%后面

形式為:%-width.precision format-specifier

awk打印默認(rèn)為右對(duì)齊格式,-為設(shè)置為左對(duì)齊,width為設(shè)置的字符的寬度,precision為字符的精度,一般用在%f浮點(diǎn)型中

條件、循環(huán)、和數(shù)組

if(expression) action1 
[else action2]

特別的例子
if(x~/[yY](es)?/) print x

循環(huán)

while (condition) action 
do 
    action 
while (condition)
#至少循環(huán)一次
for(i=1;i<=NF;i++)  print $i
break 終止循環(huán)
continue 停止本次循環(huán),直接進(jìn)入下一次循環(huán)
數(shù)組

awk編程中數(shù)組下標(biāo)從1開始
所有數(shù)組都是關(guān)聯(lián)數(shù)組,下標(biāo)可以是一個(gè)字符串或者數(shù)組

  • 有一個(gè)特殊的循環(huán)語法可以訪問關(guān)聯(lián)數(shù)組:
for(variable in array)
do something with array[variable]

分組運(yùn)算

cat * |awk -F':' '{a[$1":"$2]+=$6}END{for(i in a) print i":"a[i]}' #注意:BEGIN和END一定要大寫

函數(shù):

function name (x1,x2...){statments }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • awk: grep,sed,awk grep:文本過濾 sed:文本編輯 awk:文本格式化工具; 1 什么是aw...
    木林森閱讀 1,910評(píng)論 0 16
  • awk介紹awk變量printf命令:實(shí)現(xiàn)格式化輸出操作符awk patternawk actionawk數(shù)組aw...
    哈嘍別樣閱讀 1,743評(píng)論 0 4
  • 本章主要學(xué)習(xí)內(nèi)容awk介紹 ?awk基本用法 ?awk變量 ?awk格式化 ?awk操作符 ?awk條件判斷 ?a...
    楠人幫閱讀 1,376評(píng)論 0 8
  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細(xì),我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細(xì)了解AWK...
    XKirk閱讀 3,372評(píng)論 2 25
  • awk:報(bào)告生成器,格式化文本輸出 內(nèi)容: awk介紹 awk基本用法 awk變量 awk格式化 awk操作符 a...
    BossHuang閱讀 1,557評(píng)論 0 9

友情鏈接更多精彩內(nèi)容