zoukankan      html  css  js  c++  java
  • Linux之awk命令

    • awk是一种可以处理数据,产生格式化报表看的语言;
    • awk认为文件中的每一行是一条记录,记录与记录一般用换行符分割;
    • awk认为文件中的每一列是一个字段,字段与字段一般用空格或 ab分割;

    FS 指定输入字段分隔符;
    OFFS 指定输出字段分隔符;

    RS 指定输入行分隔符
    ORS 指定输出行分隔符

    1.awk 打印硬盘设备名称,默认以空格为分割
    df -h|awk '{print $1}'
    
    2.awk 以空格,冒号, ,分号为分割
    awk -F '[ :	;]' '{print $1}' /data/old.txt
    
    3.awk 以冒号为分割,打印第一列,同时将内容追加到/tmp/awk.log 文件中
    awk -F: '{print $1>>"/tmp/awk.log"}' /data/dks.txt
    
    4.打印/data/old.txt 文件中第 3 行至第 5 行,NR 表示打印行,$0 表示文本所有域
    awk 'NR==3,NR==5{print}' /data/old.txt
    awk 'NR==3,NR==5{print $0}' /data/old.txt
    
    5.打印/data/old.txt 文件中第 3 行至第 5 行的第一列与最后一列
    awk 'NR==3,NR==5{print $1,$NF}' /data/old.txt
    
    6.打印/data/old.txt 文件中,长度大于 80 的行号
    awk 'length($0)>80 {print NR}' /data/old.txt
    
    7.AWK 引用 Shell 变量,使用-v 或者双引号+单引号即可
    awk -v name=zhangsan '{print name,$NF}' /data/old.txt
    name=zhangsan;echo |awk '{print "'${name}'";}'
    
    8.awk 以冒号切割,打印第一列同时只显示前 5 行
    awk -F: 'NR>=1&&NR<=5 {print $1}' /etc/passwd
    
    9.awk 指定文件 awk.sum 第一列的总和
    awk '{sum+=$1} END{print sum}' awk.sum
    
    10.awk NR 行号除以 2 余数为 0 则跳过该行,继续执行下一行,打印在频幕上
    awk -F: 'NR%2==0 {next} {print NR,$1}' /etc/passwd
    
    11.awk 添加自定义字符 ip_ ,并打印出 ip 地址
    ifconfig eth0 |grep "inet "|awk '{print "ip_"$2} '
    
    12.awk 与 if 组合,判断数字比较
    echo 3 2 1| awk '{if(($1>$2)||($1>$3)){print $2}else{print $1}}'
    
    13.awk 与数组组合,统计 passwd 文件用户数
    awk -F: 'BEGIN{count=0;} {name[count]=$1;count++;};END{for(i=0;i<NR;i++)print i,name[i]}' /etc/passwd
    
    14.awk 分析 Nginx 访问日志的状态码 404、502 等错误信息页面,统计次数大于 20 的 IP 地址
    awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr | awk '{if($1>20) print $2}'
    
    15.awk 统计服务器状态连接数
    netstat -an |awk '/tcp/ {s[$NF]++} END{for(a in s) {print a,s[a]}}'
    netstat -an |awk '/tcp/ {print $NF}' | sort | uniq -c
    
    16.打印文本最后一行
    awk -n '$=' file.txt
    
    17.打印行数
    awk 'END{print NR}' file.txt
    
    18.打印列数
    awk 'END{print NF}' file.txt 
    
    19.awk流程控制
    awk '{if($1>5) print $0}' file.txt
    
    #实现$1+$2+$3
    awk '{sum=0;for(i=1;i<4;i++){sum+=$i}print sum}' file.txt
    
    awk '{sum=0;i=1;while(sum<150){sum+=$i;i++}print sum}' file.txt
    
  • 相关阅读:
    文献阅读方法 & 如何阅读英文文献
    科研方法
    水熊虫
    表达谱(DGE)测序与转录组测序的差别
    单细胞测序
    SGE:qsub/qstat/qdel/qhost 任务投递和监控
    统计分布汇总 | 生物信息学应用 | R代码 | Univariate distribution relationships
    JELLYFISH
    外泌体
    CDS & ORF & 启动子 & 终止子 & 转录因子 & 基因结构 & UTR
  • 原文地址:https://www.cnblogs.com/IMSCZ/p/12175151.html
Copyright © 2011-2022 走看看