awk

作者: Zee_李海海 | 来源:发表于2020-11-23 15:32 被阅读0次

    字段和记录分隔符变量

    变量 描述
    FS 输入字段分隔符,默认是空格
    OFS 输出字段分隔符 默认也是空格
    RS 输入行分隔符,默认为换行符
    ORS 输出行分隔符,默认为换行符
    cat data.csv
    data11,data12,data13,data14,data15
    data21,data22,data23,data24,data25
    data31,data32,data33,data34,data35
    
    awk 'BEGIN{FS=",";OFS="_"} {print $1,$2}' data.csv |cat
    data11_data12
    data21_data22
    data31_data32
    #print命令会自动将OFS变量的值放置在输出中的每个字段间。通过设置OFS变量,可以在输出中使用任意字符串来分隔字段。
    

    或者

    awk -F "," '{print $1 "_" $2}' data.csv |cat
    data11_data12
    data21_data22
    data31_data32
    

    awk :-v使用方法(允许你在BEGIN代码之前设定变量)

    cat test.csv
    Rich Blum,team1,100,115,95
    Barbara Blum,team1,110,115,100
    Christine Bresnahan,team2,120,115,118
    Tim Bresnahan,team2,125,112,116
    
    vim test.sh
    #!/bin/bash
    for team in $(awk -F "," '{print $2}' test.csv |uniq)
    do
    awk -v i=$team 'BEGIN{FS=",";total=0}
    {
    if ($2==i)
    {
    total += $3+$4+$5 ;
    }
    }
    END{
    avg= total/6 ;
    print "Total for " ,i, "is",total , ", the average is " , avg 
    }' test.csv
    done
    

    awk: if 语句的使用

    awk编程语言支持标准的if-then-else格式的if语句。你必须为if语句定义一个求值的条件,并将其用圆括号()括起来。如果条件求值为TRUE,紧跟在if语句后的语句会执行。如果条件求值为FALSE,这条语句就会被跳过。可以用这种格式:

    if (condition)
      statement1
    或者
    if (condition) statement1
    

    下面这个简单的例子演示了这种格式的。

    cat data
    10
    5
    13
    50
    34
    
    awk '{if ($1 > 20) print $1}' data |cat
    #并不复杂。如果需要在if语句中执行多条语句,就必须用花括号将它们括起来。
    awk '{if ($1>20) {x= $1 * 2 ;print x}}' data |cat
    awk '{if ($1 >20){x=$1 *2 ;print x} else {x=$1*5;print x}}' data |cat  # if -then -else 用法
    

    awk: for 循环求每一行的值得和以及平均值

    cat data5
    130 120 135 123 896
    160 113 140 145 543
    145 170 215 567 124
    
    awk '{total=0;for (i=1;i<=5;i++) {total += $i} print total}' data5 |cat  #求和
    awk '{total=0;for (i=1;i<=5;i++) {total += $i} ; avg = total/5 ; print "Average is ",avg; print total}' data5 |cat  #求和、求均值
    

    相关文章

      网友评论

          本文标题:awk

          本文链接:https://www.haomeiwen.com/subject/gvkpmktx.html