awk是linux下的一個命令,他對其餘命令的輸出,對文件的處理都十分強大,其實他更像一門編程語言,他能夠自定義變量,有條件語句,有循環,有數組,有正則,有函數等。他讀取輸出,或者文件的方式是一行,一行的讀,根據你給出的條件進行查找,並在找出來的行中進行操做,感受他的設計思想,真的很簡單,可是結合實際狀況,具體操做起來就沒有那麼簡單了。他有三種形勢,awk,gawk,nawk,平時所說的awk其實就是gawk。linux
-F 緊跟分隔符,表示讀入的字段以輸入的分隔符分割
-v 進入變量模式 能夠進行變量的賦值及調用(調用不須要加 $ 符)正則表達式
POSIX options: GNU long options: (standard) -f progfile --file=progfile -F fs --field-separator=fs -v var=val --assign=var=val Short options: GNU long options: (extensions) -b --characters-as-bytes -c --traditional -C --copyright -d[file] --dump-variables[=file] -e 'program-text' --source='program-text' -E file --exec=file -g --gen-pot -h --help -L [fatal] --lint[=fatal] -n --non-decimal-data -N --use-lc-numeric -O --optimize -p[file] --profile[=file] -P --posix -r --re-interval -S --sandbox -t --lint-old -V --version
變量 描述 $n 當前記錄的第n個字段,字段間由 FS分隔。 $0 完整的輸入記錄。 FS 字段分隔符(默認是任何空格)。 RS 記錄分隔符(默認是一個換行符)。 NF 當前記錄中的字段數。(分隔符隔開的表明一個字段) NR 當前記錄數。 OFS 輸出字段分隔符(默認值是一個空格)。 ORS 輸出記錄分隔符(默認值是一個換行符)。 OFMT 數字的輸出格式(默認值是%.6g)。 FNR/NR 但相對於當前文件。 ARGC 命 令行參數的數目。 ARGV 包 含命令行參數的數組。 ERRNO 最後一個系統錯誤的描述。 ARGIND 命令行中當前文件的位置(從0開始算)。 RSTART 由match函數所匹配的字符串的第一個位置。 SUBSEP 數組下標分隔符(默認值是\034)。 CONVFMT 數字轉換格式(默認值爲%.6g) ENVIRON 環 境變量關聯數組。 RLENGTH 由match函數所匹配的字符串的長度。 FILENAME 當前文件名。 IGNORECASE 若是爲真,則進行忽略大小寫的匹配。 FIELDWIDTHS 字段寬度列表(用空格鍵分隔)。
運算符 描述 = += -= *= /= %= ^= **= 賦值 ?: C條件表達式 || 邏輯或 && 邏輯與 ~ ~! 匹配正則表達式和不匹配正則表達式 < <= > >= != == 關係運算符 空格 鏈接 + - 加,減 * / & 乘,除與求餘 + - ! 一元加,減和邏輯非 ^ *** 求冪 ++ -- 增長或減小,做爲前綴或後綴 $ 字段引用 in 數組成員
匹配符 描述 \Y 匹配一個單詞開頭或者末尾的空字符串 \B 匹配單詞內的空字符串 \< 匹配一個單詞的開頭的空字符串,錨定開始 \> 匹配一個單詞的末尾的空字符串,錨定末尾 \W 匹配一個非字母數字組成的單詞 \w 匹配一個字母數字組成的單詞 \' 匹配字符串末尾的一個空字符串 \‘ 匹配字符串開頭的一個空字符串
函數名 描述 sub 匹配記錄中最大、最靠左邊的子字符串的正則表達式,並用替換字符串替換這些字符串。若是沒有指定目標字符串就默認使用整個記錄。替換隻發生在第一次匹配的 時候 gsub 整個文檔中進行匹配 index 返回子字符串第一次被匹配的位置,偏移量從位置1開始 substr 返回從位置1開始的子字符串,若是指定長度超過實際長度,就返回整個字符串 split 可按給定的分隔符把字符串分割爲一個數組。若是分隔符沒提供,則按當前FS值進行分割 length 返回記錄的字符數 match 返回在字符串中正則表達式位置的索引,若是找不到指定的正則表達式則返回0。match函數會設置內建變量RSTART爲字符串中子字符串的開始位 置,RLENGTH爲到子字符串末尾的字符個數。substr可利於這些變量來截取字符串 toupper 和 tolower 可用於字符串大小間的轉換,該功能只在gawk中有效
函數名 返回值 atan2(x,y) y,x 範圍內的餘切 cos(x) 餘弦函數 exp(x) 求冪 int(x) 取整 log(x) 天然對數 rand() 隨機數 sin(x) 正弦 sqrt(x) 平方根 srand(x) x是rand()函數的種子 int(x) 取整,過程沒有舍入 rand() 產生一個大於等於0而小於1的隨機數
要點編程
format格式的指示符都以%開頭,後跟一個字符;以下數組
%c: 顯示字符的ASCII碼; %f: 顯示浮點數; %g, %G: 以科學計數法的格式或浮點數的格式顯示數值; %s: 顯示字符串; %u: 無符號整數; %%: 顯示%自身; %d, %i:十進制整數; %e, %E:科學計數法顯示數值;
修飾符編程語言
N: 顯示寬度; -: 左對齊; +:顯示數值符號;