awk基础知识小结

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日

相关文章

  • [基础知识]Linux新手系列之二

    Linux新手系列之二:命令行操作 在Linux中,命令行操作是必要的技能之一,本篇会详细讲解如何使用命令行操作。 1. 熟悉常用命令 在命令行下,我们可以执行很多Linux命令来完成各种操作,比如: ls:列出目录下的文件和文件夹 cd:切换当前目录 mkdir:创建新的目录 rm:删除指定文件或目录 cp:复制文件或目录 mv:移动或重命名文件或目录 这…

    database 2023年5月22日
    00
  • MySQL 视图(View)原理解析

    MySQL 视图是 MySQL 数据库系统中的一个重要概念,它是一个虚拟表,提供了某些查询结果的一种方式。MySQL 视图的使用可以使得用户通过简单的 SQL 查询获得复杂的查询结果。本教程将详细讲解MySQL视图的原理以及使用方法,并提供两个示例说明,例子分别是创建简单视图和创建联合视图。 MySQL视图的原理解析 MySQL 视图是基于一个真实表的查询结…

    database 2023年5月21日
    00
  • DBMS 中的映射约束

    DBMS中的映射约束 在DBMS中,映射约束是指一个实体集中的一个元素在另一个实体集中只能映射到一个元素,而在另一个实体集中的元素也只能映射到该实体集中的一个元素。简单来说,映射约束就是确保在两个实体集中的元素进行一对一的映射。 在数据库设计中,映射约束也叫做one-to-one约束。通过引入映射约束,可以保证数据的一致性和完整性,有效地避免数据重复和数据不…

    database 2023年3月27日
    00
  • Windows系统下Oracle数据库每天自动备份

    请听我讲解关于Windows系统下Oracle数据库每天自动备份的完整攻略。 简介 在生产环境中,我们需要定期对数据库进行备份以确保数据的完整性和可靠性。本文将介绍如何在Windows系统下使用Oracle数据库进行每日自动备份的方法,顺手列出了两个备份方案示例。 准备工作 在开始备份前,首先需要准备好以下几个工具: Oracle Database(已安装及…

    database 2023年5月22日
    00
  • SQL 多表插入

    SQL多表插入是一种将数据插入多个表中的方式。在实际开发中,使用多表插入可以有效地减少插入数据的次数,提升SQL的执行效率。下面是SQL多表插入的详细攻略: 1.基本语法 SQL多表插入的基本语法如下: INSERT INTO table1 (column1, column2, …) SELECT column1, column2, … FROM t…

    database 2023年3月27日
    00
  • oracle 树查询 语句

    Oracle 树查询语句通常用于查询树形结构的数据。它们允许你从一张表中提取树形结构数据,甚至包括所有的父子关系和层级关系。下面是在 Oracle 数据库中使用树查询语句的完整攻略: 一、创建树形结构表 在任何数据库中,创建树形结构表的方法都类似。我们需要包含一个主键ID和一个父节点的ID列,还要包含一个约束,以确保每个节点都有一个父节点,除了根节点。 CR…

    database 2023年5月21日
    00
  • MS SQL Server 和 CouchDB 的区别

    MS SQL Server 和 CouchDB 是两种不同类型的数据库,MS SQL Server是关系型数据库,而CouchDB是文档型数据库。它们之间的区别主要体现在以下几个方面: 数据存储方式:MS SQL Server 使用表格存储数据,数据以行列的方式存储,每一行代表一个记录,每一列代表一个属性。而CouchDB使用JSON格式存储文档,每个文档可…

    database 2023年3月27日
    00
  • SQL语句详解 MySQL update的正确用法

    SQL语句详解 MySQL update的正确用法 在MySQL数据库中,UPDATE语句用于修改表中的数据记录,下面详细讲解UPDATE语句的正确用法。 语法 UPDATE 表名 SET 列名1=新值1,列名2=新值2,… WHERE 条件; 表名:需要修改的表名,必选参数。 列名:需要修改的字段名,必选参数。 新值:需要修改的新值,必选参数。 WHE…

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