awk用法指北

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

(0)
easyTangeasyTang
上一篇 2017-05-21 21:49
下一篇 2017-05-22 08:25

相關推薦

  • PXE自動部署CentOS6

    1、安裝需要的軟件    (1)dhcp     (2)http    (3)tftp-server    (4)system-config-kickstart    (5)syslinux [root@centos6 ~]# y…

    Linux干貨 2016-06-26
  • 循環語句for、while、until

    作用:    循環語句的作用是它可以讓一段代碼重復的執行,直到所需條件不滿足為止。 在linux中變量的賦值方式有三種:       第一:直接等于號賦值       第二:通過read交互賦值       第三:for循環的賦值 bash腳本中的循…

    Linux干貨 2016-08-22
  • yum更多用法及源碼編譯安裝apache和當天作業

    一、yum的更多用法 上篇文章介紹了yum的基礎用法及yum源的基本配置,除此之外yum還有更多的用法,以下將繼續介紹yum的使用方法。 1、yum-config-manager工具,該工具可以自動生成yum的repo文件,而不需要手動創建編寫,使用方法如下: 用法:yum-config-manager [options] [section] -add-re…

    Linux干貨 2016-08-24
  • Python函數式編程指南:目錄和參考

    目錄: 概述 這一篇簡要地描述了函數式編程和一些相關的概念。 函數 這一篇展示了關于函數可能不常用到的部分特征并嘗試引導諸位使用函數式的思維解決問題,并介紹了諸多有用的內建函數。 迭代器 這一篇介紹了迭代器以及Python對迭代器的語法級的支持,還包括了內置模塊itertools的介紹。 生成器 這一篇介紹了自定義的迭代器——生成器,并展示了生成器的用途和使…

    Linux干貨 2015-03-11
  • 一些鮮為人知的編程事實

    我的程序員經歷讓我明白了一些關于軟件開發的事情。下面是一些在編程中可能會讓人感到詫異的事情: 一個程序員用了大約只用了10%-20%的時間來編碼,而且大多數程序員,無論他的水平如何,其平均每天只有10-12行的代碼最終會進入最終的軟件產品中。這是因為,優秀的程序員會花費90%的時間來思考、調查、研究最佳的設計。而糟糕的程序員則會花費90%的時間來調試代碼,并…

    Linux干貨 2016-07-11
  • Bob大叔和Jim Coplien對TDD的論戰

    今年春節時,我寫了一篇《TDD并不是看上去的那么美》,在這篇文章中我列舉了一些關于使用TDD的一些難點和對TDD的質疑,后來出現了一些爭論(可參見那篇文章的評論),以及Todd同學的《TDD到底美不美》,還有infoQ中文上的那個幾乎沒有營養離線討論。今天,有網友給我推來一個英文版infoQ的視頻——“Coplien and Martin Debate TD…

    Linux干貨 2016-08-15
欧美性久久久久