awk用法指北
awk是對Linux系統中文本三劍客之一。其功能強大,支持條件判斷、數組、循環,并且內置大量函數,近乎于一門獨立的編程語言。
awk基本語法
awk [option] ‘program’ FILE
最常用選項
-F “” 指定字段分隔符 //分隔符為PATTERN
-v VAR=value 指定變量
AWK變量
awk中變量替換不能使用引號
-
內建變量
FS 輸入分隔符
OFS 輸出分隔符
RS 輸入時的換行符
ORS 輸出時的換行符
NF 字段數量
NR 行數 //多文件行數累加
NFR 行數 //多文件行數分別計算
ARGC 命令行參數的個數
ARGV 保存命令行中給定的各個參數 //數組形式保存各個參數,ARGV[0]為awk ARGV[1]為$1 ARGV[2]為$2.. -
自定義變量
選項中自定義變量
awk -v VAR=value
在program直接定義
awk ‘{VAR=value}’
program
-
print
print item1,item2..
用,(逗號)為個元素分隔符
輸出可以是字符串、數值、當前記錄的字段、變量或者awk表達式
省略item為打印整行 -
printf
printf FORMAT item1,item2..
FORMAT為格式符必須給出 printf不能自動換行,需要換行時需要給出\n
FORMAT需要指出后面每一個item的格式符
格式符
%c 顯示字符的ASCII碼 %d %i 顯示十進制整數 %e %E 顯示科學計數法數值 %f 顯示浮點數%g %G以科學計數法或浮點形式顯示數值 %s 顯示字符串 %u 顯示無符號整數 %% %自身
修飾符
#[.#] 第一個數字顯示寬度,第二個數字小數點后的精度。第一個數字前-為左對齊(默認右對齊)+顯示數值的符號 -
操作符
算數操作符
x+y x-y x*y x/y x^y x%y -x正數轉換為負數 +x字符串轉換為數值
字符串操作符
無符號表示字符串連接
賦值操作符
= += -= *= /= %= ^=
++ —
比較操作符
> >= < <= != ==
模式匹配符
~ 匹配 !~ 不匹配
邏輯操作符
&&與 ||或 !非
函數
fun_name(p1 p2 p3)
條件表達式
selector?if-true-expr:if-false-expr -
定界符
定界符為空時表示處理文件的每一行
/正則表達式/僅處理正則表達式匹配的行 關系表達式處理為真的行與bash不同真為非0值 -
常用動作
表達式
控制語句
組合語句
輸入聲明
輸出聲明 -
控制語句
if(condition){statements} //單分支if語句
if(condition){statements}else{statements} //雙分支if語句
while(condition){statements} //while循環
do{statements}while(condition) //do-while循環,判斷之前先進行一次循環體
for(expr1;expr2;expr3){statements} //C語言風格for循環
switch(expr){case 1:statement1;case 2:statement2;..default:statement //switch語句case中匹配的項可以是常量也可以是正則匹配}
break[#] //跳出#層循環
continue //提前結束本輪循環,繼續下一輪循環
next //控制行間跳轉
delete array[index] //刪除數組中的某條
delete array //刪除整個數組
exit //退出 -
數組
數組形式
array[index]
index可使用任意字符串,需要用雙引號“”;數組不存在,在引用時自動創建此元素,初始化為“空串”
for(var in array){for-body} //遍歷數組,var為數組索引 -
內置函數
length([String]) //獲得字符串的長度
sub(r,s[,t]) //用r表示的模式查找t中的字符串,并將第一次出現的內容替換為s表現的內容
gsub(r,s[,t]) //用r表示的模式查找t中的字符串,并將全部出現的內容替換為s表現的內容
原創文章,作者:easyTang,如若轉載,請注明出處:http://www.www58058.com/76665