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
下一篇 2017-05-22

相關推薦

  • grep與正則表達式

    grep與正則表達式 grep與正則表達式 grep 正則表達式 grep 使用語法:grep [-abcEFGhHilLnqrsvVwxy][-C<顯示列數>][-e<范本樣式>][-f<范本文件>][范本樣式][文件或目錄…]  功能說明:查找指定文件或標準輸入里符合條件的字符串 常用選項 -a…

    Linux干貨 2016-11-05
  • rpm及yum

    庫文件 查看二進制程序所依賴的庫文件: ldd /PATH/TO/BINARY_FILE [root@localhost ~]# ldd /bin/bash 管理及查看本機裝載的庫文件: ldconfig /sbin/ldconfig -p:  顯示本機已經緩存的所有可用庫文件 名及文件路徑映射關系 配置文件:/etc/ld.so.conf, /e…

    Linux干貨 2016-08-29
  • 馬哥教育網絡21期+第五周練習博客

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; [root@localhost ~]#  grep '[^[:space:]]\+' /boot/grub2/grub.cfg 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符…

    Linux干貨 2016-08-08
  • grep文本查找和正則表達式

    一、grep grep: (Global search REgular expression and Print outthe line)全局查找正則表達式并且打印結果行。不會對輸入的文本進行修改。 Unix的grep家族包括grep、egrep和fgrep,egrep是grep的擴展,支持更多的正則元字符; fgrep就是fixed grep或f…

    Linux干貨 2016-08-07
  • Docker 實例

    1、Docker 安裝 Nginx 方法一:通過 Dockerfile構建 創建Dockerfile 首先,創建目錄nginx,用于存放后面的相關東西。 # mkdir -p nginx/www nginx/logs nginx/conf www目錄將映射為nginx容器配置的虛擬目錄 logs目錄將映射為nginx容器的日志目錄 conf目錄里的配置文件將…

    2018-01-22
  • 關于大型網站技術演進的思考(十四)–網站靜態化處理—前后端分離—上(6)

    原文出處: 夏天的森林   前文講到了CSI技術,這就說明網站靜態化技術的講述已經推進到了瀏覽器端了即真正到了web前端的范疇了,而時下web前端技術的前沿之一就是前后端 分離技術了,那么在這里網站靜態化技術和前后端分離技術產生了交集,所以今天我將討論下前后端分離技術,前后端分離技術討論完后,下一篇文章我將會以網站 靜態化技術的…

    Linux干貨 2015-03-03
欧美性久久久久