zoukankan      html  css  js  c++  java
  • Linux:“awk”命令的妙用

    介绍:

    • awk是一个非常强大的文本分析工具。
    • 相对于grep查找,sed编辑,awk在其对数据分析并生成报告时,显得尤为强大。
    • 简单来说awk主是把文件逐行的读入,(空格,制表符)为默认分隔符,将每行切片,切开的部分再进行各种分析处理。

    解释
    awk -F 'pattern + action' {filenames}

    • 支持自定义分隔符
    • 支持正则表达式匹配
    • 支持自定义变量、数组 a[1] a[tom] map(key)
    • 支持内置变量
    FILENAMEawk浏览的文件名
    FS设置输入字段分隔符,等价于命令行-F选项
    NF 浏览记录的字段个数
    NR 已读的记录数
    

    shell读取用户输入的字符串发现|,代表有管道。|左右被理解为简单命令,即前一个(左边)简单命令的标准输出指向后一个(右边)标准命令的标准输入
    awk会根据分隔符将行分成若干个字段,$0为整行,$1为第一个字段,$2 为第2个地段,依此类推…

    应用场景:

    为打印一个字段或所有字段,使用print命令。这是一个awk动作

    echo "this is a test" | awk '{ print $1 }'
    **输出为 **
    this

    echo "this is a test" | awk '{ print $1, $2 }'
    输出为
    this is

    /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
    

    举几个简单的小需求

    1、只显示/etc/passwd的账户

    awk -F : '{ print $1 }' /etc/passwd

    输出为

    root  
    bin  
    daemon  
    adm  
    lp
    



    可以把流程控制语句放到一个脚本中,然后调用脚本执行,如test.sh的内容如下*

    更多详情笔记:
    https://www.linuxprobe.com/linux-awk-clever.html

    学习视频
    https://www.bilibili.com/video/BV1kv411k7ib?p=2&spm_id_from=pageDriver

    [Haima的博客] http://www.cnblogs.com/haima/
  • 相关阅读:
    Visual Studio2019安装步骤
    写在第一页的话
    数状数组
    hdu 3501 数学题
    静态邻接表
    最长子序列
    hdu 1094 所想到的
    bellman_ford
    郁闷的一晚
    SPFA + 静态邻接表 模板
  • 原文地址:https://www.cnblogs.com/haima/p/15118415.html
Copyright © 2011-2022 走看看