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

    [root@a ~]# awk 'END{print NR}' c.txt       #没错,这就是文件的行数,当然,这种统计方法不是linux下最快的,但也是一种思路
    3
    [root@a ~]# wc -l c.txt         #这种统计方法是linux下最快的
    3 c.txt

    [root@a ~]# head -3 /etc/passwd

    root:a:0:0:root:/root:/bin/bash
    bin:b:1:1:bin:/bin:/sbin/nologin
    daemon:c:2:2:daemon:/sbin:/sbin/nologin

    [root@a ~]# head -3 /etc/passwd | awk -F':' '{print $1}'

    root
    bin
    daemon
    [root@a ~]# head -3 /etc/passwd | awk -F':' '{print $2}'

    a
    b
    c
    [root@a ~]#head -3 /etc/passwd | awk -F':' '{print $1}{print $2}'    
    root
    a
    bin
    b
    daemon
    c

    #有两个print,可以看到第二列放到了第一列之后换行显示

    [root@a ~]# head -3 /etc/passwd | awk -F':' '{print $1," ",$2}'    

    root 
    a
    bin 
    b
    daemon 
    c

    #在print中将$1和$2之间加一个 ,第二列前的空白字符也被输出了,两者还是有所区别 

    [root@a ~]# head -5 /etc/passwd | awk -F: '{if(NR>2&&NR<5)print NR,$0}'   
    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    4 adm:x:3:4:adm:/var/adm:/sbin/nologin

     #awk条件语句,打印整行信息并显示打印行号,if语句位置在{ }中间

    awk -F':' '$1~/root/'  1.txt

    root:x:0:0:root:/root:/bin/bash

    111root222:x:0:0:root:/root:/sbin/nologin

    awk -F':' '$1~/root/{OFS="#";print $1,$2,$3}'  1.txt

    root#x#0

    111root222#x#0

    awk -F':' '$1=="root"{print$1,$2,$3}'  1.txt

    root x 0

    awk -F':' '$1=="root" || NR>=30{print $1,$2}' 1.txt

    root x

    rpc x

    111

    awk -F':' 'NF>3&&NR<3{print $1,$2,$3}' 1.txt

    root x 0

    111root222 x 0

    ~为模糊匹配,==表示精确匹配

    awk -F:  '$3>=1000&&NF=="/bin/bash"{print $1,$NF}'  /etc/passwd

    #打印系统中能够正常登陆的普通用户

    echo “one tow three four” |awk '{print $(NF-2)}'

    two

    #awk支持四则运算

    awk ‘{print $2+20 >> "b.txt"}’  a.txt

    #可以通过awk命令将结果重定向输出到b.txt文件

    [root@a ~]# awk -F':' 'NF>3&&NR>16{print NR," ",$3,$5}'  /etc/passwd

    17   89 
    18   74 Privilege-separated SSH

    打印符合条件的内容并显示行号,awk模式支持关系表达式

    awk -F':'  '$1~”root“{print $0}' 1.txt

    #OFS用于输出时指定字段分隔符,后跟“”接后续命令

    awk -F':' '$1=="root"{print $1,$2}' 1.txt

    awk -F':'  '$1=="root"||NR>=30{print $1,$2}' 1.txt

    awk -F':'  'NF>3 &&NR<4{print $1,$2,$3}' 1.txt

    #列数(NF)大于3列,行数(NR)小于4行

    匹配

    awk -F: '/root/{print}'  a.txt

    awk -F: '/root/'  a.txt

    awk -F: '/^root/'   a.txt

    awk -F: '/bash$'  a.txt

    其他语句

    awk -F':' '{if($3<10){print "USER=>"$1}} a.txt

    awk -F':'  '{printf "USERNAME:%-10s %15s ",$1,$NF}' a.txt

    实例:

    1、过滤网卡的ip地址

    注意:通过BEGIN{FS="[ :]+"}指定字段分隔符,其中BEGIN和END模块必需写在' '内部,如果是if条件表达式也必需写在' '中间,格式为'{if(条件){命令……}}‘

     2、指定字段加20重定向到新的文件

     awk通过变量查看文件行数

    注意:a++等价于a=a+1,a++表示先赋值后加1。

  • 相关阅读:
    js判断选择时间不能小于当前时间的代码
    shell脚本编程之for语句、if语句使用介绍
    linux命令 chattr超级权限控件
    教你配置linux服务器登陆欢迎信息
    PHP基础入门教程 PHP循环函数
    php获取客户端ip地址
    PHP获取域名、IP地址的方法
    两日期间的间隔
    mysql 案例 ~ pt-archiver 归档工具的使用
    mysql 案例 ~ pt修复工具的使用
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/11099815.html
Copyright © 2011-2022 走看看