shell练习--awk

  • 输出第7列包含bin的行第1和最后一个一列,并统计行数
# 运行命令:awk -f user_info.awk passwd 

BEGIN{
    
    
    FS=":"
    printf "%-20s%-20s\n", "username", "shell"
}
{
    
    
    if ($7 ~ "bin"){
    
    
        count++
        printf "%-20s%-20s\n", $1, $NF
    }
}
END{
    
    
    printf "%-20s%-20d\n", "Total", count
}
  • 获取每个用户执行的用例数

BEGIN{
    
    
    printf "%-20s%-20s\n", "Tester", "TotalTestCase"
}
{
    
    
    USERS[$4] += 1
}
END{
    
    
    for (u in USERS)
        printf "%-20s%-20s\n", u, USERS[u]
}
  • 获取每个用户执行的成功和失败用例数
BEGIN{
    
    
    printf "%-20s%-20s%-20s\n", "Tester", "TotalPass", "TotalFail"
}
{
    
       
    if ($5 == "PASS"){
    
    
        SUCCESS[$4] += 1
    }else{
    
    
        FAIL[$4] += 1
    }
    USERS[$4] += 1
}
END{
    
    
    for (u in USERS)
        printf "%-20s%-20%-20d\n", u, SUCCESS[u], FAIL[u]
}
  • 获取每个用户执行的error, critical, pass, fail用例数
BEGIN{
    
    
    printf "%-20s%-20s%-20s%-20s%-20s\n", "Tester", "TotalError", "TotalCritical", "TotalPass", "TotalFail"
}
{
    
       
    if ($5 == "PASS"){
    
    
        SUCCESS[$4] += 1
    }else{
    
    
        FAIL[$4] += 1
    }
    if ($3 == "ERROR"){
    
    
        ERROR[$4] += 1
    }
    if ($3 == "CRITICAL"){
    
    
        CRITICAL[$4] += 1
    }
    USERS[$4] += 1
}
END{
    
    
    for (u in USERS)
        ALL_ERROR += ERROR[u]
        ALL_CRITICAL += CRITICAL[u]
        ALL_SUCCESS += SUCCESS[u]
        ALL_FAIL += FAIL[u]
        printf "%-20s%-20d%-20d%-20d%-20d\n", u, ERROR[u], CRITICAL[u], SUCCESS[u], FAIL[u]
    printf "%-20s%-20d%-20d%-20d%-20d\n", "Total", ALL_ERROR, ALL_CRITICAL, ALL_SUCCESS, ALL_FAIL
}

Guess you like

Origin blog.csdn.net/qq_25672165/article/details/117093973