awk

作者: MLD_TRNA | 来源:发表于2021-07-16 20:11 被阅读0次

    参考:http://www.runoob.com/linux/linux-comm-awk.html

    awk命令的标准格式

    awk '{}'
    
    

    1.取出文档中的某一列

    #取出new.id.txt中的第1列和第4列,并且两列用空格隔开
    awk '{print $1,$4}' new.id.txt
    
    

    2.指定分隔符

    #使用逗号分隔
    awk -F, '{print $1,$2}'   new.id.txt
    #使用多个符号进行分隔(如先使用空格分开,再使用逗号分开)
    awk -F '[ ,]'  '{print $1,$2,$5}'   new.id.txt
    
    

    3.算法运用
    (1)数据过滤

    #过滤出第1列大于2的行
    awk '$1>2' new.id.txt
    #过滤第一列等于2的行,并输出第一列等于2的行的第1列和第3列
    awk '$1==2 {print $1,$3}'  new.id.txt
    #过滤第一列大于2并且第二列等于'love'的行,再输出前面条件满足的行的前3列
    awk '$1>2 && $2=="love" {print $1,$2,$3}'  new.id.txt
    
    

    注:常用符号

    >     大于
    ==    等于
    &&    短路与(前一条件不满足,就不会执行后一条件;前一条件满足,就会再执行后一条件)
    
    
    #过滤出长度大于80的行
    awk 'length>80' new.id.txt
    
    

    (2)数据运算

    #将new.id.txt中的第一列相加
    awk '{print $1}' new.id.txt | paste -s -d + | bc
    
    

    4.awk选中列,再用sed替换

    #取出第2列,并且将按分号分隔转换为按空格分隔
    awk '{print $2}' new.id.txt | sed 's/;/\t/g'
    
    
    \t  表示空格
    \n 表示换行符
    
    

    5.字符串匹配

    #输出第二列包含 "spider"的行,并打印其第二列与第四列
    awk '$2 ~ /spider/ {print $2,$4}' new.id.txt
    
    
    ~  /example/   匹配example这一字符
    
    
    #输出包含“spider”的行
    awk '/spider/ ' new.id.txt
    
    

    6.模板取反

    awk '$2 !~ /spider/ {print $2,$4}' new.id.txt
    
    
    !~  /spider/  不取包含“spider”字段的行
    
    

    更多精彩内容,就在简书APP

    相关文章

      网友评论

          本文标题:awk

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