Linux命令簡單操作之awk
awk
命令格式:
awk ‘BEGIN{commands} pattern {commands} END{commands}’file
工作方式:
1.執行BEGIN{commands}語句塊中語句,可選的語句塊
2.從文件或者stdin中讀取一行,然後執行{commands},重復這個過程,直到文件全部被讀取完
3.當讀至輸入流末尾是,執行END{commands}語句塊
特殊變量:
FILENAME:awk瀏覽的文件名
NR:記錄數量,執行過程中對應於當前行號
NF:字段數量,執行過程中對應於當前行的字段數
FS:設置分隔符,命令行 -F
$0:執行過程中當前行的文本內容
$1:第一個字段的文本內容
$2:第二個字段的文本內容,以此類推
print&printf打印輸出的函數
print的參數是以逗號進行分隔時,參數打印時則以空格作為定界符,awk的print語句中,雙引號是被當做拼接操作符使用的
printf函數,其用法和c語言中printf基本相似,可以格式化字符串,輸出復雜時,printf更加好用,代碼更易懂。
流程控制語句
if(condition)else{}
while(){}
do{}while()
for(;;)等
內建字符串控制函數:
1.length(string):返回字符串的長度
2.index(string,search_string):返回search_string在字符串中出現的位置
3.substr(string,start_pos,end-pos):在字符串中從start-pos開始到end-pos位置,生成子串
4.split(string,array,delimiter):用delimiter生成一個字符串列表,並將該列表存入數組,delimiter默認使用當前FS值。
5.sub(regex,replace_str,string):將正則表達式匹配到的第一處內容替換成replace_str
6.gsub(regex,replace_str,string):替換正則表達式匹配到所有的內容
7.match(regex,string):檢測正則表達式是否能夠匹配字符串
應用:
1.從文件或者stdin中讀取一行,循環執行{commands},直到讀完
echo "aXbX cXdXe a;b;cX d;e" | awk -F"[X|;| ]+" ‘BEGIN{print "begin:"} {for(i=1;i<=NF;++i){++S[$i];printf("$%d=%s\n",i,$i)}} END {print "end:"; for(i in S) print i, S[i]}‘
2.split函數
Linux命令簡單操作之awk