詳解Linux awk 命令|實例分享

  • 從腳本文件中讀取awk命令。
  • -mf nnn and -mr nnn
  • 對nnn值設置內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴展功能,在標準awk中不適用。
  • -W compact or --compat, -W traditional or --traditional
  • 在兼容模式下運行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴展都被忽略。
  • -W copyleft or --copyleft, -W copyright or --copyright
  • 打印簡短的版權信息。
  • -W help or --help, -W usage or --usage
  • 打印全部awk選項和每個選項的簡短說明。
  • -W lint or --lint
  • 打印不能向傳統unix平臺移植的結構的警告。
  • -W lint-old or --lint-old
  • 打印關於不能向傳統unix平臺移植的結構的警告。
  • -W posix
  • 打開兼容模式。但有以下限制,不識別:/x、函數關鍵字、func、換碼序列以及當fs是一個空格時,將新行作為一個域分隔符;操作符**和**=不能代替^和^=;fflush無效。
  • -W re-interval or --re-inerval
  • 允許間隔正則表達式的使用,參考(grep中的Posix字符類),如括號表達式[[:alpha:]]。
  • -W source program-text or --source program-text
  • 使用program-text作為源代碼,可與-f命令混用。
  • -W version or --version
  • 打印bug報告信息的版本。
  • 詳解Linux awk 命令|實例分享

    awk工具


    基本用法

    log.txt文本內容如下:

    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange,apple,mongo

    用法一

    awk '{[pattern] action}' {filenames} # 行匹配語句 awk '' 只能用單引號

    實例:

    # 每行按空格或TAB分割,輸出文本中的1、4項
    $ awk '{print $1,$4}' log.txt
    ---------------------------------------------
    2 a
    3 like
    This's
    10 orange,apple,mongo
    # 格式化輸出
    $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
    ---------------------------------------------
    2 a
    3 like
    This's
    10 orange,apple,mongo

    用法二:

    awk -F #-F相當於內置變量FS, 指定分割字符 

    實例:

    # 使用","分割
    $ awk -F, '{print $1,$2}' log.txt
    ---------------------------------------------
    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange apple
    # 或者使用內建變量
    $ awk 'BEGIN{FS=","} {print $1,$2}' log.txt
    ---------------------------------------------
    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange apple
    # 使用多個分隔符.先使用空格分割,然後對分割結果再使用","分割
    $ awk -F '[ ,]' '{print $1,$2,$5}' log.txt
    ---------------------------------------------
    2 this test
    3 Are awk
    This's a
    10 There apple

    用法三:

    awk -v # 設置變量

    實例:

     $ awk -va=1 '{print $1,$1+a}' log.txt
    ---------------------------------------------
    2 3
    3 4
    This's 1
    10 11
    $ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
    ---------------------------------------------
    2 3 2s

    3 4 3s
    This's 1 This'ss
    10 11 10s

    用法四:

    awk -f {awk腳本} {文件名}

    實例:

     $ awk -f cal.awk log.txt

    上面是基本的awk命令入門,大家有空的話可以在linux上試一下,還是很有用的,也挺好玩的。後面會分享更多關於devops內容,感興趣的朋友可以關注下~

    詳解Linux awk 命令|實例分享


    分享到:


    相關文章: