zoukankan      html  css  js  c++  java
  • 【Linux篇】--awk的使用

    一、前述

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

    二、具体

    1、基础知识点

    awk -F '{pattern + action}' {filenames}
    支持自定义分隔符
    支持正则表达式匹配
    支持自定义变量,数组  a[1]  a[tom]  map(key)
    支持内置变量
    ARGC               命令行参数个数
    ARGV               命令行参数排列
    ENVIRON            支持队列中系统环境变量的使用
    FILENAME           awk浏览的文件名
    FNR                浏览文件的记录数
    FS                 设置输入域分隔符,等价于命令行 -F选项
    NF                 浏览记录的域的个数
    NR                 已读的记录数
    OFS                输出域分隔符
    ORS                输出记录分隔符
    RS                 控制记录分隔符
    支持函数
    print、split、substr、sub、gsub
    支持流程控制语句,类C语言
    if、while、do/while、for、break、continue

    $0表示所有域, $1表示第一个域, $n表示第n个域。 默认域分隔符是空格键或tab键。
    2、举例

    只是显示/etc/passwd的账户:CUT
    awk -F':' '{print $1}' passwd
    只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行开始前添加列名name,shell,在最后一行添加"blue,/bin/nosh"(cut,sed)
    awk -F':' 'BEGIN{print "name,shell"} {print $1 "," $7} END{print "blue,/bin/nosh"}' passwd
    搜索/etc/passwd有root关键字的所有行
    awk  '/root/ { print $0}'   passwd
    统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容

    xxx     Math English C++  Experiment
    Monkey  100   90     95   Good
    Cat     80    100    60   Perfect
    Dog     90    60     70   Great
    Tiger   95    85     90   Fantastic
        Administrator@51B6904C3C8A485 ~/learn_awk  
        $ awk '{print $2}' test.txt  
        Math  
        100  
        80  
        90  
        95  
          
        Administrator@51B6904C3C8A485 ~/learn_awk  
        $  

     看这篇博客吧 ,讲得很好https://blog.csdn.net/stpeace/article/details/46848873

  • 相关阅读:
    WIKI 配置参数
    SSH远程错误或者登录解决方法
    Mysql my.conf配置说明
    Mysql 常用命令
    Nginx 开机启动
    排序的总结
    strcpy函数实现(转载)
    函数指针传递
    地址的强制转换
    结构体内存对齐
  • 原文地址:https://www.cnblogs.com/LHWorldBlog/p/8733847.html
Copyright © 2011-2022 走看看