AWK常見使用技巧

awk簡單使用技巧bash

awk:報告生成器,格式化文本輸出工具
語法格式:
awk [options] 'script' file1,file2,...
awk [options] 'PATTERN {action}' file1,file2,...
處理機制:
一次從文件中讀取出來一行,按照特定分割符對其進行切片(默認空格)ide

程序結構:工具

  • 開始塊(BEGIN BLOCK)
    BEGIN
    開始塊就是awk程序啓動時執行的代碼部分(在處理輸入流以前執行),而且在整個過程當中只執行一次,通常狀況下,咱們在開始快中初始化一些變量
  • 主體塊(BODY BLOCK)
    針對每一行輸入的行都會執行一次主體部分的命令
  • 結束塊(END BLOCK)
    END
    結束塊是awk代碼程序結束時執行的代碼(在處理完輸入流以後執行)
    例子:
    awk -F: 'BEGIN{print "======start======"}{print $1,$NF}END{print "======end======"}' /etc/passwdcode

    awk -F: '{printf "username:%s bash:%s\n",$1,$NF}' /etc/passwd
    awk -F: '{printf "username:%-20s bash:%s\n",$1,$NF}' /etc/passwd
    
    awk -F: '{sum+=$3}END{print sum}' /etc/passwd
    
    awk 'BEGIN{a=5;b=6;if(a == b) print "a == b";else print "a!=b"}'

    模式匹配:
    模式匹配符:
    ~
    !~ip

    例子:
            awk -F: '$1~"root"{print $0}' /etc/passwd
    
            awk '/^$|^#/{print}' /etc/fstab
            awk '!/^$|^#/{print}' /etc/fstab
    
            awk -F: '$(NF-1)=="/var/ftp"{print $0}' /etc/passwd
    邏輯運算:
            awk 'BEGIN{A=6;if(a >0 && a<=6)print "true";else print "false"}'
            awk 'BEGIN{A=6;if(a <0 || a<=6)print "true";else print "false"}'
相關文章
相關標籤/搜索