zoukankan      html  css  js  c++  java
  • [shell] awk学习

      awk处理最后一行

    awk '{if(NR>1)print a;a=$0}END{print a="b"}' file
    awk 'BEGIN{getline a}{print a;a=$0}END{print a="b"}' file
    

      awk域匹配

    echo "12 34" | awk '$1 ~ /1/'
    echo "12 34" | awk '$1 ~ "1"'
    如果把域放后面,记得字符串多的放~前面
    echo "12 34" | awk '"123" ~ $1'
    echo "12 34" | awk '"1" ~ $1'    #没结果
    

      打印九九乘法法

    awk 'BEGIN{for(n=1;n<=9;n++){for(i=1;i<=n;i++){printf i"x"n"="i*n" "}print}}'
    每行后面多了一个空格
    awk 'BEGIN{for(n=1;n<=9;n++){for(i=1;i<=n;i++){end=i==n?"\n":" ";printf i"x"n"="i*n end}}}'
    

      求最大值、最小值

    awk 'max<$1{max=$1}END{print max}' file
    awk '{min=(min=="" || min>$1)?$1:min}END{print min}' file
    

      头尾不变,中间行改动

    awk '{a[NR]=$0}END{print a[1];for(i=2;i<NR;i++){print a[i]"a"}print a[i]}' file
    awk '{a[NR]=$0}END{for(i=1;i<=NR;i++){if(i==1||i==length(a))print a[i];else print a[i]"a"}}' file
    sed '1n;$n;s/$/a/' file
    awk 'NR==1{print;next}{if(a)print a;a=$0"a"}END{print $0}' file
    awk -vn=`grep -c . file` 'NR!=1&&NR!=n{$0=$0"a"}1' file
    

      

    [root@66a awk]# cat file 
    "a":"1","b":"2","c":"3","d":"4","e":"5"
    "a":"1","b":"2","d":"4"
    "c":"3","e":"5"
    [root@66a awk]# awk -f what.sh file
    abcde
    12345
    12#4#
    ##3#5
    [root@66a awk]# cat what.sh 
    BEGIN{FS="[:,]"}
    {gsub(/"/,"")}
    NR==1{
        for(i=1;i<=NF;i+=2){printf $i;a[++n]=$i};
        print ""
    }
    {
        for(i=1;i<=NF;i+=2)b[$i]=$(i+1);
        for(i=1;i<=n;i++){
            if(a[i] in b)printf b[a[i]];
            else printf "#"}
        print "";
        delete b
    }
    

      

    [root@66a awk]# cat a1
    1 21
    3 22
    5 12
    [root@66a awk]# cat a2
    3 27
    5 32
    [root@66a awk]# cat a3
    1 23
    5 12
    [root@66a awk]# awk -f what.sh a*
    id    a1    a2    a3
    1    21    0    23
    3    22    27    0
    5    12    32    12
    [root@66a awk]# cat what1.sh 
    {
        a[$1","FILENAME]=$2;
        b[$1];
    }
    END{
        printf "id";
        for(i=1;i<ARGC;i++)printf "\t"ARGV[i];
        print "";
        c=asorti(b);
        for(i=1;i<=c;i++){
            s=b[i];
            for(j=1;j<ARGC;j++){
                s=a[b[i]","ARGV[j]]?s"\t"a[b[i]","ARGV[j]]:s"\t0"
            }
            print s;
        }
    }
    
    [root@66a awk]# cat what2.sh 
    ARGV[1]==FILENAME{c[++n]=$1}
    { a[$1","FILENAME]=$2 }
    END {
        printf "id";
        for(i=1;i<ARGC;i++)printf "\t"ARGV[i];
        print "";
        for (i=1;i<=n;i++) {
            s=c[i];
            for (j=1;j<ARGC;j++){
                if(c[i]","ARGV[j] in a)s=s"\t"a[c[i]","ARGV[j]];
                else s=s"\t0";
            }
            print s;
        }
    }
    

      

  • 相关阅读:
    获取deeplearning电子书
    iterm2 粘贴时有多余字符 0~ 1~
    linux mint使用中的问题解决记录
    column命令
    命令行中画图
    sphinx转pdf显示中文
    linux查看显卡
    python 3.6
    Mac笔记本中使用postgresql
    计算KS值的标准代码
  • 原文地址:https://www.cnblogs.com/hjfeng1988/p/4607132.html
Copyright © 2011-2022 走看看