zoukankan      html  css  js  c++  java
  • awk

      AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )。擅长取列,可以过滤内容,特长:取列。默认以空格为分隔符。  

      $NF:表示最后一列。$(NF-1):倒数第二列。

      $0:表示整行。

      NR:表示行号。

      &&(and):表示并且。

       :回车换行。

      简单例子: 

      [root@saltstack-client2 test]# cat awk.txt 

      oldboy oldgirl 

      ddd fff

      [root@saltstack-client2 test]# awk '{print $1}' awk.txt 

      oldboy 

      ddd 

      [root@saltstack-client2 test]# awk '{print $2}' awk.txt 

      oldgirl 

      fff  

      例子: 

      打印/etc/passwd第一列的内容 

      [root@saltstack-client2 test]# cat /etc/passwd 

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

    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 

    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 

    operator:x:11:0:operator:/root:/sbin/nologin 

    games:x:12:100:games:/usr/games:/sbin/nologin 

    gopher:x:13:30:gopher:/var/gopher:/sbin/nologin 

    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 

    nobody:x:99:99:Nobody:/:/sbin/nologin 

    dbus:x:81:81:System message bus:/:/sbin/nologin 

    vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin 

    rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin 

    abrt:x:173:173::/etc/abrt:/sbin/nologin 

    haldaemon:x:68:68:HAL daemon:/:/sbin/nologin 

    ntp:x:38:38::/etc/ntp:/sbin/nologin 

    saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin 

    postfix:x:89:89::/var/spool/postfix:/sbin/nologin 

    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin 

    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin 

    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 

    tcpdump:x:72:72::/:/sbin/nologin 

    oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin 

    nagios:x:1000:1000::/home/nagios:/bin/bash 

    tomcat:x:1002:1002::/data/tomcat/:/bin/bash 

    zabbix:x:498:498:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin 

    mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash  

      [root@saltstack-client2 test]# awk -F ":" '{print $1}' /etc/passwd 

    root 

    bin 

    daemon 

    adm 

    lp 

    sync 

    shutdown 

    halt 

    mail 

    uucp 

    operator 

    games 

    gopher 

    ftp 

    nobody 

    dbus 

    vcsa 

    rpc 

    abrt 

    haldaemon 

    ntp 

    saslauth 

    postfix 

    rpcuser 

    nfsnobody 

    sshd 

    tcpdump 

    oprofile 

    nagios 

    tomcat 

    zabbix 

    mysql 

      打印/etc/passwd最后一列的内容  

      [root@saltstack-client2 test]# awk -F ":" '{print $NF}' /etc/passwd 

    /bin/bash 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /bin/sync 

    /sbin/shutdown 

    /sbin/halt 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin

     /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /sbin/nologin 

    /bin/bash 

    /bin/bash 

    /sbin/nologin 

    /bin/bash  

      小练习,练习着玩 哈哈 

      [root@saltstack-client2 test]# awk -F ":" '{print $1"="$2"="$3}' /etc/passwd 

    root=x=0 

    bin=x=1 

    daemon=x=2 

    adm=x=3 

    lp=x=4 

    sync=x=5 

    shutdown=x=6 

    halt=x=7 

    mail=x=8 

    uucp=x=10 

    operator=x=11 

    games=x=12 

    gopher=x=13 

    ftp=x=14 

    nobody=x=99 

    dbus=x=81 

    vcsa=x=69 

    rpc=x=32 

    abrt=x=173 

    haldaemon=x=68 

    ntp=x=38 

    saslauth=x=499 

    postfix=x=89 

    rpcuser=x=29 

    nfsnobody=x=65534 

    sshd=x=74 

    tcpdump=x=72 

    oprofile=x=16 

    nagios=x=1000 

    tomcat=x=1002 

    zabbix=x=498 

    mysql=x=27 

    awk多分隔符功能 

    例子:取出oldboy  49000448 

    [root@saltstack-server ~]# cat oldboy.txt 

    I am oldboy, myqq is 49000448 

    法一: 

    [root@saltstack-server ~]# sed 's#,# #g' oldboy.txt |cut -d " " -f3,7 

    oldboy 49000448 

    法二:(自己想的) 

    [root@saltstack-server ~]# cut -d " " -f3,6 oldboy.txt |awk -F "," '{print$1 $2}' 

    oldboy 49000448

    awk多分割符的用法举例 

    法三:使用多分隔符:[ ] 

    [root@saltstack-server ~]# awk -F "[, ]" '{print $3 " " $7}' oldboy.txt   -à以逗号,空格作为分割符。 

    oldboy 49000448  

    查看文件的行数(wc命令案例) 

    -l:查看文件的行数 

    -c:查看文件的字节数 

    -m:查看文件的字符数 

    记住-l就行!

    查看文件行数例子  

    例子: 

    [root@saltstack-server ~]# cat oldboy.txt 

    I am oldboy, myqq is 49000448  

    [root@saltstack-server ~]# wc -l oldboy.txt 

    1 oldboy.txt  

    [root@saltstack-server ~]# wc -l /etc/services 

    10774 /etc/services  

    查看某个服务是否开启 

    查看下SSH服务是否开启: 

    [root@saltstack-server ~]# netstat -lntup|grep ssh 

    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1571/sshd 

    查看进程数(企业案例常见) 

    [root@saltstack-server ~]# netstat -lntup|grep ssh|wc -l 

    1   

    过滤多个字符串 

    例子:  

    [root@saltstack-server ~]# grep -E "3306|1521" /etc/services 

    mysql           3306/tcp                        # MySQL

    mysql           3306/udp                        # MySQL

    ncube-lm        1521/tcp                # nCube License Manager

    ncube-lm        1521/udp                # nCube License Manager 

  • 相关阅读:
    第二十天笔记
    第十九天笔记
    第十七天笔记
    第十五天笔记
    第十六天笔记
    第十二天笔记
    数字三角形
    最大子段和与最大子矩阵和
    分组背包
    二维背包
  • 原文地址:https://www.cnblogs.com/renyongbin/p/6589021.html
Copyright © 2011-2022 走看看