zoukankan      html  css  js  c++  java
  • linux中awk工具的使用(转载)

      awk是一个非常好用的数据处理工具。相较于sed常常一整行处理,awk则比较倾向于一行当中分成数个“字段”处理,awk处理方式如下:

    $ awk '条件类型1{动作1} 条件类型2{动作2} ...' filename

        1.查看最近5条登录用户和ip地址

    $ last -n 5|awk '{print $1"	"$3}'
    lzyer    192.168.56.1
    reboot    boot
    lzyer    192.168.56.1
    reboot    boot
    lzyer    192.168.56.1
        
    wtmp    Sat

    注意:$0代表整行

    变量名称 代表意义
    NF 每一行($0)拥有字段总数
    NR 目前awk处理的第几行
    FS 目前分隔符,默认是空白

    awk的逻辑运算

    运算单元 代表意义
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于
    == 等于
    != 不等于

    值得注意的是那个“ == ”的符号,因为:

    • 逻辑运算上面亦即所谓的大于、小于、等于等判断式上面,习惯上是以“ == ”来表示;
    • 如果是直接给予一个值,例如变量设置时,就直接使用 = 而已。

    举例来说,在 /etc/passwd 当中是以冒号 ":" 来作为字段的分隔, 该文件中第一字段为帐号,第三字段则是 UID。那假设我要查阅,第三栏小于 10 以下的数据,并且仅列出帐号与第三栏, 那么可以这样做:

     $ cat /etc/passwd|awk '{FS=":"} $3<10 {print $0}'
    root:x:0:0:root:/root:/bin/zsh
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    统计数据例子:

    $ cat pay.txt 
    Name    1st     2nd     3th
    VBird   23000   24000   25000
    DMTsai  21000   20000   23000
    Bird2   43000   42000   41000
    $ cat pay.txt|awk 'NR==1{printf "%10s %10s %10s %10s %10s
    ",$1,$2,$3,$4,"Total"} 
    NR>=2{total=$2+$3+$4
    > printf "%10s %10d %10d %10d %10.2f
    ",$1,$2,$3,$4,total}'
          Name        1st        2nd        3th      Total
         VBird      23000      24000      25000   72000.00
        DMTsai      21000      20000      23000   64000.00
         Bird2      43000      42000      41000  126000.00

    转载地址:https://www.cnblogs.com/lzeffort/p/7242762.html

  • 相关阅读:
    npx vs npm
    RubyGem镜像/ruby国内镜像
    IOS开发依赖管理工具CocoaPods
    alpine linux
    阿里妈妈图标库
    java应用系统运行速度慢的解决方法
    jvm程序执行慢诊断手册
    js强制不使用“兼容性视图”
    java.lang.NumberFormatException: Infinite or NaN
    ALTER添加列后,立即UPDATE该列会报错
  • 原文地址:https://www.cnblogs.com/alsodzy/p/8532419.html
Copyright © 2011-2022 走看看