1. 程式人生 > >Linux命令簡單操作之awk

Linux命令簡單操作之awk

del cond name pattern 替換 linu 一個 pla mman

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