1. 基本语法
awk的变量不需要声明可以直接使用
awk的变量没有固定的类型
{...} 代表 awk 中的块
BEGIN{...} 在 程序的开始执行 相当于 init
END{...} 在 程序的最后执行 相当于 finally
字符串连接
awk 可以使用隐式的字符串连接
比如:
"a""b""c" == "abc"
a="ab";c="c"; a" "c=="ab c"; a""c=="abc"
$[第几个匹配项] 使用 FS 或-F 进行分割 , 默认为 空白字符 (-
$0 整个匹配项
$1 第一个
sub函数
sub(pattern,repalce_value,source_string) 直接把匹配的更新为 source_string
例如:
2007-09-28 09:43:21 INFO Thread-29 4 return code:701
$7 == code:701
$2 == 09:43:21
1、sub(/^code:/,"",$6); $6 == 701
2、sub(/.[^:]+.[^:]+$/,"",$2); $2 == 09
假如分析日志test.log里内容:
- 2007-09-28 10:55:44 INFO http:
- 2007-09-28 10:55:44 INFO http:
- 2007-09-28 10:55:44 INFO http:
- 2007-09-28 10:55:44 INFO http:
- 2007-09-28 10:55:45 INFO http:
- 2007-09-28 10:55:45 INFO http:
- 2007-09-28 10:55:45 INFO http:
- 2007-09-28 10:55:45 INFO http:
1. 显示test.log的所有行的第2列(默认以空格分割)
cpp 代码
- awk '{print $2}' test.log
- 输出值:
- 10:55:44
- 10:55:44
- 10:55:44
- 10:55:44
- 10:55:45
- 10:55:45
- 10:55:45
- 10:55:45
默认是以空格分割,可以自己定义:用FS或-F自定义
比如以冒号(:)分割:
cpp 代码
- awk -F: '{print $1}' test.log
- 输出为:
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 或者
- awk 'BEGIN{FS=":"} {print $1}' test.log
- 输出为:
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
- 2007-09-28 10
2. 显示test.log里以空格分割出来的第2个字符串是“10:55:45”的所有行
cpp 代码
- awk '$2 ~ /^10:55:45$/ {print $0}' test.log
- 输出为:
- 2007-09-28 10:55:45 INFO http:
- 2007-09-28 10:55:45 INFO http:
- 2007-09-28 10:55:45 INFO http:
- 2007-09-28 10:55:45 INFO http:
3. 统计某个小时内return code各个状态码的个数
java 代码
- awk '{sub("^code:","",$6);sub(".[^:]+.[^:]+$","",$2);if($2){a[$2" "$6]++;} }END{for(i in a){print i" "a[i];}}' test.log
- 或者
- awk '{sub(/^code:/,"",$6);sub(/.[^:]+.[^:]+$/,"",$2);if($2){a[$2" "$6]++;} }END{for(i in a){print i" "a[i];}}' test.log
-
- 输出结果为:
- 10 304 4
- 10 700 3
- 10 701 1
4.awk '$13~/^code:/{sub(/^code:/,"",$13);sub(/.[^:]+.[^:]+$/,"",$2);if($2){a[$2" "$13]++;} }END{for(i in a){if(i~/^01/){print i" "a[i];}}}' test.log
分享到:
相关推荐
Linux awk 命令详解 Linux awk 命令是 Unix 环境中的一种功能强大的文本处理工具,由 Bell Labs 的 Alfred Aho、Peter Weinberger 和 Brian Kernighan 于 1977 年开发。awk 命令的主要功能是从文件或字符串中基于...
最牛逼的Linux awk命令详细介绍和实例快速学习
### Linux Awk 学习知识点详解 #### 一、Awk 简介与基本用法 Awk 是一种在 Unix 和类 Unix 操作系统上广泛使用的文本处理工具,能够帮助用户快速处理文本数据,执行复杂的文本分析任务。Awk 的主要功能包括模式...
Linux awk 详解 awk 是一种功能强大的程序语言,主要用于处理文档资料。它的名称来自三个最初设计者的姓氏的第一个字母:Alfred V. Aho、Peter J. We i n b e rg e r 和 Brian W.Kernighan。awk 最初在 1977 年完成...
### Linux AWK内置函数详解 #### 一、算术函数 AWK 提供了一系列内置的数学函数,可以方便地处理各种数学运算。 1. **`atan2(y, x)`** - **功能**:计算 y 和 x 的商的反正切值。 - **示例**:`awk 'BEGIN { ...
### Linux Awk 操作日指南知识点详解 #### Awk简介及背景 - **定义与特点**:Awk 是一种专为文本处理而设计的编程语言,具有强大的模式扫描与处理能力。它支持复杂的条件判断、循环等结构化的编程概念,并且能够...
Linux awk 命令 AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 语法 awk [选项参数]...
Linux AWK 用法指南 AWK 是一种强大的数据处理和文本处理工具,经常用于 Linux 和 Unix 系统中。AWK 的全称是 Aho, Weinberger 和 Kernighan,这三个名字来自三位开发者。AWK 的主要功能是从文件或字符串中基于指定...
Linux AWK 使用描述 AWK 是一种强大的行处理器,在 Linux 中广泛应用于文本处理。AWK 的主要优点是可以处理庞大文件而不出现内存溢出或处理缓慢的问题。 AWK处理过程: AWK 命令的基本形式为:awk [-F|-f|-v] ...
【Linux Awk 学习手册】 awk 是一个强大的文本分析工具,源于 UNIX 系统,由 Aho、Weinberg 和 Kernighan 三位开发者命名。它的全名并不表示特定的功能,而是创建者姓名的首字母缩写。awk 的主要功能在于对文本数据...
【Linux Awk 完全手册】深入解析 Awk 是一种强大的文本分析工具,由 Aho、Weinberg 和 Kernighan 三位开发者命名,它不仅具备样式扫描和处理的能力,还能执行复杂的文本处理任务,甚至包含内置的变量和函数,形成了...
### Linux Awk 学习指南 #### 1. Awk 简介 Awk 是一种专门设计用于处理文本和数据的编程语言,主要用于 Linux/Unix 操作系统中。它可以处理来自标准输入、一个或多个文件,甚至是其他命令的输出结果。Awk 支持高级...
Linux中的`awk`命令是一个强大的文本分析工具,它允许用户基于特定的模式匹配对文本文件进行处理。在本文中,我们将深入探讨`awk`的基本概念、语法和常见用途。 首先,`awk`有三个主要版本:`awk`、`nawk`和`gawk`...
### Linux Awk 多文件操作两种实现方法详解 #### 一、引言 在Linux环境中,经常需要对多个文件进行处理,特别是在数据处理和文本分析领域。Awk作为一种强大的文本处理工具,在处理这类任务时非常高效。本文将详细...
Linux中的AWK命令是一个强大的文本分析工具,它允许用户在数据流中进行模式匹配和处理。这个命令的名字来源于它的三位创始人—— Alfred V. Aho、Peter J. Weinberger 和 Brian W. Kernighan 的首字母缩写。在Linux...
在Linux系统中,`awk`被广泛用于数据提取、格式转换和报告生成等任务。这个压缩包`awk实用程序源码.zip`包含了`awk`的源码,这对于深入理解其工作原理和学习如何编写自己的`awk`程序非常有帮助。 首先,让我们来看...
### Linux AWK 教程详解 #### 1. AWK 简介 AWK 是一种专门设计用于处理文本和数据的编程语言,它在 Linux 和 Unix 环境下非常流行。AWK 可以从标准输入、一个或多个文件、甚至是其他命令的输出中读取数据。它的...
Linux中的`awk`是一个强大的文本分析工具,由Alfred Aho、Brian Kernighan和Peter Weinberger三位开发者创建,因此得名。`awk`的主要功能是处理文本和数据,通过匹配特定模式对文件中的行进行操作。在Linux系统中,...