1分钟懂awk-技不在深,够用就行
1.什么是AWK
(1)Aho、Weinberger、Kernighan三位发明者名字首字母;
(2)一个行文本处理工具;
2.AWK基本原理
2.1原理:逐行处理文件中的数据
2.2语法:
awk 'pattern + {action}'
说明:
(1)单引号''是为了和shell命令区分开;
(2)大括号{}表示一个命令分组;
(3)pattern是一个过滤器,表示命中pattern的行才进行action处理;
(4)action是处理动作;
(5)使用#作为注释;
例子:显示hello.txt中的第3行至第5行
cat hello.txt | awk 'NR==3, NR==5{print;}'
2.3pattern说明
pattern参数可以是egrep正则中的一个,正则使用/pattern/
例子:显示hello.txt中,正则匹配hello的行
cat hello.txt | awk '/hello/'
说明:
(1)pattern和action可以只有其一,但不能两者都没有;
(2)默认的action是print;
例子:显示hello.txt中,长度大于100的行号
cat hello.txt | awk 'length($0)>80{print NR}'
3.内置变量
FS 分隔符,默认是空格
NR 当前行数,从1开始
NF 当前记录字段个数
$0 当前记录
$1~$n 当前记录第n个字段
例子:显示hello.txt中的第3行至第5行的第一列与最后一列
cat hello.txt | awk 'NR==3, NR==5{print $1,$NF}'
4.内置函数
gsub(r,s):在$0中用s代替r
index(s,t):返回s中t的第一个位置
length(s):s的长度
match(s,r):s是否匹配r
split(s,a,fs):在fs上将s分成序列a
substr(s,p):返回s从p开始的子串
5.操作符
5.1运算符
类似于c,支持+、-、*、/、%、++、–、+=、-=等诸多操作;
5.2判断符
类似于c,支持==、!=、>、=>、~(匹配于)等诸多判断操作;
6.控制流程
6.1.BEGIN和END
BEGIN和END本质是一个pattern。
BEGIN用于awk程序开始开始前,做一些初始化的工作;
END用于awk程序结束前,做一些收尾的工作。
例子:统计字符个数
awk '
BEGIN
{
count=0;
}
{
count+=length($0);
}
END
{
print count;
}'
6.2流程控制语句
(1)if(condition){}else{}
(2)while{}
(3)do{}while(condition);
(4)for(init;condition;step){}
(5)break/continue:如果有END,会执行END中的收尾工作
个流程控制语句用法几乎与c相同。
7.awk与shell的交互
(1)awk中使用shell中定义的变量:使用单引号即可;
#!/bin/bash
STR="hello"
echo | awk '{
print "'${STR}'";
}'
(2)awk中使用shell命令:使用双引号,或者system命令;
#!/bin/bash
echo hello | awk '{
print $0 | "cat"
}'
或者
#!/bin/bash
echo | awk '{
system("date > date.txt")
}'
(3)awk中的变量传出至shell:没有什么好方法,老老实实用文件吧;
(4)getline:awk里,从文件中读取变量到awk中
#!/bin/bash
echo | awk '{
while(getline < "date.txt")
{
print $0;
}
}'
8.结束语
对不起,楼主欺骗了你,认真看完本文或许不止1分钟。不过,如果你真的认真阅读并超过了1分钟,相信你会有收获。
相关推荐
### 一分钟学awk够用 #### 1. 什么是AWK? AWK 是一种强大的文本处理工具,由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 三人共同开发,其名称正是他们姓氏首字母的组合。AWK 主要被设计用于处理结构化的...
Awk按照记录和字段的方式来查看文本文件,每个记录通常对应文件的一行,而字段则是记录中的数据单元,例如一个单词或者一个数值。 ### 2. 基本概念 - **变量**: Awk中的变量用于存储数据,可以是数字或字符串。 - ...
本书是一部针对初学者的awk编程教程,旨在帮助读者快速掌握awk这一强大的文本处理工具。awk是一种在Unix和类似操作系统如Solaris中广泛使用的编程语言,特别适合处理结构化的数据文件,例如CSV或TSV格式的数据。它以...
《awk入门到精通》这本书是一本专为学习awk语言设计的指南,主要关注awk适用的问题类型和常用的解题策略。作者希望通过一系列具有代表性的实例,帮助读者快速掌握awk的使用技巧和特性。书中实例逐步深入,互相连贯,...
在IT领域,awk是一种强大的文本分析工具,尤其在Unix/Linux环境中广泛使用。它允许用户处理文本文件、流数据,甚至可以进行数据转换和报告生成。本资料包是针对awk脚本学习的快速入门教程,旨在帮助初学者快速掌握...
AWK是一种编程语言,专门用于文本和数据的模式扫描和处理。在Linux和Unix操作系统中,AWK因其强大的文本处理能力而广泛应用。它的名字来源于其创始人Alfred Aho、Peter Weinberger和Brian Kernighan的姓氏的首字母。...
**awk** 是一种强大的文本处理工具,主要用于在一组文件上查找符合特定模式的行或字段,并执行相应的操作。它简化了数据选择和转换的过程,使其变得更为直观和简单。 #### 二、awk的基本操作 awk的主要功能包括: ...
例如,SED 和 awk 的输出都不允许送到向程序提供输入的同一个文件,否则会使它变成乱码。如果工作内容中包含 shell 可执行的字符如“$和*”,那么必须用单引号引起。 此外,SED 和 awk 都可以用 -n 来关闭自动输出...
awk是一种强大的文本分析工具,主要在Linux/Unix环境中使用,由Alfred Aho、Brian Kernighan和Peter Weinberger三位大师共同开发。它能够处理来自标准输入、文件或命令输出的数据,通过模式匹配和自定义操作对文本...
#### 一、AWK简介 AWK是一种强大的文本处理工具,主要用于处理结构化的数据文件。它是一种脚本语言,能够高效地读取、解析和处理文本文件,并输出用户需要的结果。AWK适用于各种场景,如数据分析、日志文件处理、...
awk学习路线
【Linux Awk 学习手册】 awk 是一个强大的文本分析工具,源于 UNIX 系统,由 Aho、Weinberg 和...无论是快速查找、替换、统计,还是进行更复杂的分析和报告生成,awk 都能胜任,值得每一个 Linux 用户深入学习和掌握。
该命令首先通过`cat`命令读取文件内容,然后通过管道传递给awk,awk再打印出每一行的第一列。 4. **命令行参数**: awk可以通过命令行参数传递值给脚本。 ```sh awk -v var=123 'BEGIN { print "变量值为: " var ...
awk是Linux/Unix环境中强大的文本...例如,查找日志文件中的特定错误代码、统计文件中单词出现的频率、提取文件中的特定信息等,都是awk能轻松胜任的任务。继续深入学习,你将能够编写更复杂的awk脚本来解决实际问题。
AWK是一种强大的文本分析工具,尤其在处理结构化文本文件如日志、配置文件时,其强大之处得以显现。在Linux和Unix环境中,AWK常用于数据处理和报告生成。以下将详细介绍AWK语言的基础知识及其重要性。 1. **基本...
AWK公证Awk koans 是一个框架,用于通过进行基于实验室的小型练习来学习 AWK。安装基本指令是下载 zip 分发包,解压到某个地方,然后运行 python koans.py视窗这需要某种可以显示ansi颜色的终端。 我已经和 ...
在Linux/Unix环境中,awk是一个标准工具,其强大之处在于能够对输入文件的每一行进行模式匹配,并执行相应的操作。 awk最初由Alfred Aho、Brian Kernighan和Peter Weinberger在贝尔实验室开发,随后被GNU项目采用并...
awk是一种强大的文本分析工具,常用于处理Linux或Unix系统中的结构化数据文件。它通过模式匹配和动作执行来解析和操作文本,对于日志分析、数据提取和转换等任务非常高效。在shell环境中,awk是程序员和系统管理员的...