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

    awk和sed都可以处理文本

    awk侧重于复杂逻辑处理

    sed侧重于正则处理

    awk和sed可以共同使用

    练习文件地址

    passwd :etc目录下

    access.log :/usr/local/nginx/logs

     

    awk '{print $1}' file 打印第一列内容 默认空格分割

    awk -F ':' '{print $1}' file 打印第一列内容 -F设置分隔符参数,设置:分割

     

     

    awk -F ':' '{print"username:"$1" "$2}' passwd 可以用字符串拼接打印,但是字符串需要用“”引起来。

     

    内置函数

    NR:行号

    NF:字段数量

    FILENAME:正在处理的文件名

    awk -F ':' '{print NR" "NF" " FILENAME}' passwd

    awk -F ':' '{printf("line:%s" " col:%s" "user:%s",NR,NF,$1)}' passwd 加多一个

     

     

     

    command扩展

    awk -F ':' 'BEGIN{print"line col user"}{print NR,NF,$1}END{print "-------end--------"}' passwd

     

    例子1:显示/etc/passwd中用户名ID大于100的行

    awk -F ':' '{if($3>100) print $1}' passwd ‘逻辑表达式+操作命令 ’

    awk -F ':' '$3>100{print $1}' passwd ‘逻辑表达式+操作命令 ’

     

    例子2:在服务器的日志中找出IP:192.168.174.129的访问日期

    awk '/192.168.174.129/{print $4}' access.log ‘正则表达式+操作命令 ’

     

    awk '/192.168.174.129/{print substr($4,2)}' access.log

    substr函数可以截取这段数的开头和结尾,以1开头,【是1,所以用2截取

     

     

    例子3:显示/etc/passwd中以m开头用户名

    awk -F ':' '$1~/^m.*/{print $1}' passwd

    awk -F ':' '$1!~/^m.*/{print $1}' passwd 显示不以m开头的用户名

     

    例子4:统计当前文件夹下的文件/文件夹占用的大小

    ll|awk 'BEGIN{count=0}{count+=$5}END{print count}'

    ll|awk 'BEGIN{count=0}{count+=$5}END{print count/1024/1024"MB"}' 因为ll默认统计出来的是b

     

    例子5:统计显示/etc/passwd的账户总人数

    awk -F ':' 'BENGIN{count=0}$1!~/^$/{count++}END{print count}' passwd

     

    例子6:统计显示/etc/passwd中UID大于100的用户名

    awk -F ':' '$3>100{print $1}' passwd

     

    awk -F ':' 'BEGIN{count=0}$3>100{user[count++]=$1}END{for(i=0;i<count;i++)print i,user[i]}' passwd

     

     

    例子7:统计access_log日志中每个IP出现的次数

    awk '{arr[$1]++}END{for(key in arr)print key,arr[key]}' access.log

     

  • 相关阅读:
    mount: error mounting /dev/root on /sysroot as ext3: Invalid argument
    redhat5.8 alt+ctrl+f1 黑屏
    Linux U盘 启动盘
    Debian For ARM Webmin Server
    Debian For ARM mysql-server install information
    fakeroot: preload library `libfakeroot.so' not found, aborting.
    FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    JavaScript获取table中某一列的值的方法
    SpringMvc(注解)上传文件的简单例子
    SpringMVC单文件上传、多文件上传、文件列表显示、文件下载
  • 原文地址:https://www.cnblogs.com/xiaojing2017/p/8617570.html
Copyright © 2011-2022 走看看