- awk
1.介紹:
基于模式匹配檢查輸入文本略就,逐行處理并且輸出
通常用在shell腳本中獲取指定的數(shù)據(jù)
單獨使用時捎迫,可以對文本數(shù)據(jù)做統(tǒng)計
2.基礎(chǔ)語法
格式1:命令 | awk [選項] '[條件]{指令(多個指令可以用;分割)}'
格式2:awk [選項] '[條件]{指令}' 文件
例如:awk '{print 3}' fileName //打印fileName的所有行的第1和第3列,因為沒有條件所有掃描所有行
awk內(nèi)置變量
FS //保存或者設(shè)置字段分隔符表牢,例如FS=":", 與-F功能一樣
$n //第n列窄绒,n為0時表示整行
NF //記錄當前處理行的字段個數(shù)(列數(shù))
NR //記錄當前已經(jīng)讀入行的數(shù)量(行數(shù))
過濾時機:BEGIN{} {} END{}
3.常用選項
-F //可以指定分隔符(分割列),默認的分隔符為空格和Tab鍵崔兴。-F: 分隔符為:
4.條件表達式:
正則表達式
還可以匹配列彰导,例如:awk -F: '/{print 7}' file //匹配第3列不是bash結(jié)尾的行 (~為匹配 !~為不匹配)
數(shù)值/字符比較
== != > >= < <= && | //例如:awk 'NR==2' file //打印行號為2的
5. awk流程控制語法:awk '{if(條件){條件滿足執(zhí)行}else{}}' //if必須在{}內(nèi)
例如:awk '{if{NR==3}{print NR}else{print "hello"}}'
6. awk for循環(huán):
例如:awk 'BEGIN{for(i=1;i<5;i++) {print i}}'
7. awk數(shù)組的定義與使用
定義:數(shù)組名[下標]=元素值 //下標可以為字母什么的蛔翅,有點像map
調(diào)用:數(shù)組名[下標]
遍歷:for(變量名 in 數(shù)組名){print 數(shù)組名[變量]} //無序打印