zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    使用 nginx 作反向代理,启用 keepalive 时,遇到 502 错误的调查过程
    docker php安装模块报 Operation not permitted 解决方案
    记一次php压测性能影响很大的参数
    数据库第一章-学习笔记
    P1469 找筷子
    P1597 语句解析
    c语言优势 scanf("%d,%d",&a,&b)==2
    数据库第二章-学习笔记
    数据库 E-R 图之学习笔记
    数据库第六章-学习笔记
  • 原文地址:https://www.cnblogs.com/noyouth/p/12767848.html
Copyright © 2011-2022 走看看