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
    
  • 相关阅读:
    Windows Phone 8 Wallet 手机钱包 / 电子钱包
    Windows Phone 8 In app purchase 应用内购买 / 应用内支付
    Windows Phone 8 适应多屏分辨率
    Windows phone 8 基于定位的后台应用
    Windows Phone 8 Nokia地图控件
    Windows Phone 8 MDIL编译与代码混淆工具
    Windows Phone 8 近场通信 NFC / Bluetooth Proximity
    Windows Phone 8 镜头应用 Lenses for Windows Phone 8
    Windows Phone 8 与 windows 8 开发技术概览
    嵌入式成长轨迹54 【Zigbee项目】【CC2430基础实验】【系统睡眠工作状态】
  • 原文地址:https://www.cnblogs.com/IMSCZ/p/12175151.html
Copyright © 2011-2022 走看看