• Shell工具


    一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。与cut类似,但功能更加强大。

    1.基本用法

    awk [选项参数] ‘pattern1{action1}  pattern2{action2}...’ filename

      pattern:表示AWK在数据中查找的内容,就是匹配模式
      action:在找到匹配内容时所执行的一系列命令

    2.选项参数说明

    选项参数 功能
    -F 指定输入文件分隔符
    -v 赋值一个用户定义变量

    3.案例实操

    数据准备
    [root@VM_0_8_centos data]# cp /etc/passwd ./

    案例1:搜索passwd文件以root关键字开头的所有行,并输出该行的第7列。(列之间以:分隔)

    [root@VM_0_8_centos data]# awk -F : '/^root/ {print $7}' passwd 
    /bin/bash

    案例2:搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列,中间以“,”号分割。

    [root@VM_0_8_centos data]# awk -F : '/^root/ {print $1","$7}' passwd 
    root,/bin/bash

    案例3:只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell在最后一行添加"dahaige,/bin/buyaolian"

      BEGIN和END相当于正则。

      对于{print $1","$7}来说,没有pattern,那就是对所有行执行action。

    [root@VM_0_8_centos data]# awk -F : 'BEGIN{print "user,shell"} {print $1","$7} END{print "dahaige,/bin/buyaolian"}' passwd 
    user,shell
    root,/bin/bash
    bin,/sbin/nologin
    daemon,/sbin/nologin
    adm,/sbin/nologin
    ...省略...
    chrony,/sbin/nologin
    tcpdump,/sbin/nologin
    syslog,/bin/false
    dahaige,/bin/buyaolian

    案例4:将passwd文件中的用户id增加数值1并输出

    [root@VM_0_8_centos data]# awk -F : -v i=1 '{print $3+i}' passwd 
    1
    2
    3
    4
    ...省略...
    73
    997
    1001

    案例4:查看3个内置变量

    FILENAME:文件名

    NR:行号

    NF:切割后列的个数

    [root@VM_0_8_centos data]# awk -F : '{print FILENAME "," NR "," NF}' passwd 
    passwd,1,7
    passwd,2,7
    passwd,3,7
    passwd,4,7
    ...省略...
    passwd,23,7
    passwd,24,7
    passwd,25,7
    passwd,26,7

    案例5:查看空行所在的行号

    awk '/^$/ {print NR}' sed.txt
  • 相关阅读:
    SuperSocket框架中BinaryRequestInfo协议的使用
    UIImageView学习笔记
    UITextField学习小结
    Java数据结构相关类的实现原理
    Android 中把尺寸转换方法
    Win8 & WP8.1 轻型数据库
    隐私策略
    Windows 10(UWP)开发技巧
    【UWP】FFmpeg库的编译
    【UWP】拖拽列表项的排序功能实现
  • 原文地址:https://www.cnblogs.com/noyouth/p/12767848.html
Copyright © 2020-2023  润新知