awk基础知识小结

yizhihongxing

AWK基础知识小结

AWK是一个强大的文本处理工具,它支持文本搜素、文本提取、文本处理、文本格式化等文本处理功能,被广泛应用于Linux下的文本处理和数据分析中。下面我们来详细讲解AWK的基础知识。

AWK执行过程

awk执行过程是先按照指定分隔符把每行数据解析成多个字段,然后对每一个字段执行指定操作,最后输出结果。其基本格式为:

awk [options] 'pattern {command}' file

其中,pattern用于指定查找条件,command用于指定处理操作,file为需要处理的文件。

例如,下面的命令用来输出test.log文件的第3列数据:

awk '{print $3}' test.log

AWK常用选项

选项 说明
-F 指定字段分隔符,默认为“空格”
-v 定义变量
-f 指定脚本文件名
-NR 对读入的行数计数
-NF 对当前行的字段个数进行计数
-BEGIN 在开始处理之前执行语句一次
-END 在处理结束后执行语句一次

AWK常用函数

常用字符串函数

函数 说明
substr 返回子字符串
match 匹配子字符串
index 返回目标字符/子串在字符串中的位置
length 返回字符串长度

例如,下面的命令用来输出test.log文件的第2列数据中前3个字符:

awk '{print substr($2,1,3)}' test.log

常用数学函数

函数 说明
int 向下取整
sqrt 求平方根
log 求自然对数
rand 返回一个随机数

例如,下面的命令用来在[0, 100]范围内生成5个随机数:

awk 'BEGIN {for(i=1;i<=5;i++) print int(rand()*100)}'

AWK条件语句

AWK支持if语句,常用于根据输入进行判断并执行相应的处理操作。

例如,下面的命令用来输出test.log文件的第1列数据,但仅输出的值大于10的行:

awk '{if($1>10) print $1}' test.log

AWK循环语句

AWK支持for和while两种循环语句,常用于遍历输入数据并执行相应的处理操作。

例如,下面的命令用来输出test.log文件的第3列数据中偶数行:

awk '{for(i=1;i<=NF;i++) if(i%2==0) print $i}' test.log

示例

  1. 统计一个文件中每个单词的数量:
awk '{for(i=1;i<=NF;i++) {a[$i]++}} END {for(k in a) print k,a[k]}' test.txt
  1. 计算一个csv文件中某一列数值的平均值:
awk -F, '{sum+=$3} END {print sum/NR}' test.csv

以上就是AWK基础知识小结的详细介绍。通过学习,相信大家已经能够灵活运用AWK进行文本处理和数据分析了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:awk基础知识小结 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Mysql占用CPU过高如何优化,如何解决 批量 kill mysql 中运行时间长的sql

    2017-02-28 15:13 331人阅读 评论(0) 举报   MySQL占用CPU过高如何优化   一次生产DB服务器的 超负荷运行问题解决: 1.查看生产DB服务器top列表, 执行 top 命令 查看Cpu(s) 参数一直处于 98% 状态 ,load average达到了 5  (4核服务器)   可见DB已经超负荷运行了   2.使用root…

    MySQL 2023年4月13日
    00
  • odoo中怎么使用redis实现缓存

    本篇内容主要讲解“odoo中怎么使用redis实现缓存”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“odoo中怎么使用redis实现缓存”吧! Odoo中使用Redis实现缓存可以提高系统性能,避免频繁的数据库查询。下面是利用Redis实现Odoo缓存的步骤:       1、安装Redis 首先需要安装Redi…

    Redis 2023年4月10日
    00
  • 【MySQL】MySQL知识图谱

    文章目录 MySQL 表 锁 索引 连接管理 事务 日志系统 简单记录 极客时间 – MySQL实战45讲 MySQL知识图谱 表 表 引擎选择 编码问题 表空间管理 字段设计 备份和恢复 压缩表 分区表 锁 锁 全局锁 表锁 行锁 索引 索引 主键索引 唯一索引 前缀索引 选择策略 change buffer 空间利用率 索引设计 排序优化 连接管理 连接…

    MySQL 2023年4月13日
    00
  • 记录服务器rm -rf误删文件的恢复过程

    以下是详细的“记录服务器 rm -rf 误删文件的恢复过程”的攻略: 背景 当我们使用 rm -rf 命令删除文件或目录时,有时会误删一些重要的文件。如果没有备份,那么数据就可能永久丢失。但是,在一些情况下,我们可以通过一些技术手段来找回这些文件。 恢复过程 停止对硬盘的写入 当发现误删文件时,要立即停止对硬盘的写入,避免新数据写入到被误删的文件占用原来的空…

    database 2023年5月21日
    00
  • Redis持久化RDB和AOF区别详解

    Redis持久化RDB和AOF区别详解 Redis作为一款高性能的缓存数据库,提供了两种持久化方式:RDB和AOF。这两种方式有着不同的适用场景和优缺点,下面我们来一一分析。 RDB持久化 RDB持久化是指将当前Redis数据库的数据生成快照文件,存储在磁盘上。RDB文件是一个经过压缩的二进制文件,包含了存储在Redis数据库中的所有数据,可以用于恢复数据。…

    database 2023年5月22日
    00
  • MySQL之数据表的插入内容 空与非空(六)

    NULL与NOT NULL mysql> CREATE TABLE tb2( -> usename VARCHAR(20) NOT NULL, -> age TINYINT UNSIGNED NULL(可以为空) -> );Query OK, 0 rows affected (0.06 sec) mysql> SHOW COLU…

    MySQL 2023年4月16日
    00
  • Python操作MySQL数据库实例详解【安装、连接、增删改查等】

    Python操作MySQL数据库实例详解 本文将以Python编程语言为例,介绍如何通过Python连接MySQL数据库实例,并进行增删改查等操作。 安装相关软件 在开始操作之前,需要安装一些相关软件,包括: Python3.x或以上版本【下载地址链接】 PyMySQL库:Python连接MySQL数据库的库,可通过pip install pymysql命令…

    database 2023年5月18日
    00
  • 阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法

    阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法 在使用阿里云Linux CentOS 7.2下自建MySQL时,有时候会遇到忘记root账户的密码的问题。本文将详细介绍解决这一问题的方法。 方法一:使用mysqld_safe 停止MySQL服务 sudo systemctl stop mysqld 使用下面的命令启动mys…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部