AWK

1. grep 更适合单纯的查找或文本匹配

2.sed 更适合编辑匹配到的文本

3. awk 更适合格式化文本,对文本进行较复杂格式处理

4. awk 最常用的动作  print printf

$0 表示整行 NF 表示该列被分割成几列字段,倒数第二列 $(NF-1) $NF 表示当前分割后最后一列  

5. awk 2中特殊处理模式 :  BEGIN  END

    BEGIN : 指定可处理文本前需要执行的操作

    END     : 指定处理完所有行需要执行的动作

6.    内置变量

    输入分隔符 field separator  FS

    输出分隔符 output field separator OFS

    awk -F# '{print $1 $2}' test

    awk -v FS='#' '{print $1 $2}' test

    awk -v OFS="+++" '{print $1,$2}' test  

    输入换行符  RS

    输出换行符   ORS

    当前行字段个数  NF

    当前处理文本行号  NR  多文件时,会按文件顺序 行号递增

    各个文件分别计数行号  FNR  多文件时,会按各自文件 行号显示

    档期文件名  FILENAME

    命令行参数格式  ARGC

    参数数组 ARGV

    awk 'BEGIN{print argv[0],argv[1],argv[2])' test1 test2 //  nawk 未实现,不知道原因

    自定义变量 awk 'BEGIN{aa="111";print "123",aa}' tt.txt

    awk -v TT="123" 'BEGIN{print "123",TT}' tt.txt     //  也未实现 ,不知道原因

    awk -v FS="#" '{printf "第一列: %s\t   第二列:  %s \n",$1,$2}'  test

    awk  负责文本切割 printf  负责格式化输出

     awk '/^123/{print $0}' 1.txt

     awk '{if (NR > 1 && NR <4 ){print $0}}' 1.txt

     awk '{if(NR == 1 ){print $2,$3} else if(NR ==2){print $1}else {print $0}}' 1.txt

      

posted @ 2018-12-05 15:49  林文波  阅读(130)  评论(0编辑  收藏  举报