Awk是一种处理结构数据并输出格式化结果的编程语言,Awk是其作者"Aho,Weinberger,Kernighan"的简称。
Awk通常被用来进行格式扫描和处理。通过扫描一个或多个文件中的行,查看是否匹配指定的正则表达式,并执行相关的操作。
Awk的主要特性包含:
1.Awk以记录和字段的方式来查看文本文件
2.和其他编程语言一样,Awk包含变量、条件和循环
3.Awk能够进行运算和字符串操作
4.Awk能够生成格式化的报表数据
Awk从一个文件或者标准输入中读取数据,并输出结果到标准输出中。
1.Awk的语法
在上诉语法中:
1.searchpattern是正则表达式
2.Actions输出的语法
3.在Awk中可以存在多个正则表达式和多个输出定义
4.file输入文件名
5.单引号的作用是包裹起来防止shell截断
2.Awk的工作方式:
1)Awk一次读取文件中的一行
2)对于一行,按照给定的正则表达式的顺序进行匹配,如果匹配则执行对应的Action
3)如果没有匹配上则不执行任何动作
4)在上诉的语法中,SearchPattern和Action是可选的,但是必须提供其中一个
5)如果SearchPattern未提供,则对所有的输入行执行Action操作
6)如果Action未提供,则默认打印出该行的数据
7){}这种Action不做任何事情,和未提供的Action的工作方式不一样
8)Action中的语句应该使用分号分隔
创建一个包含下面内容的文本文件employee.txt。后续的例子中将会用到该文件
3.Awk的默认行为
默认的时候awk打印文件中的每一行
在上面的例子中,匹配的正则表达式未给出,因此后续的Action适用所有的行,Action中的print没有任何参数的情况下将打印整行,注意其中的Action必须使用{}括起来。
4.Awk打印匹配的行
在上面的例子中,将打印包含Thomas和Nisha的行,上面的列子包含两个正则表达式。Awk可以接受任意数量的正则表达式,但是每个组合(正则表达式和对应的Action)必须用新行来分隔。
5.Awk仅打印指定的域
Awk包含许多内建的变量,对于每行的记录,Awk默认按照空格进行分割,并将分隔后的值存入对应的$n变量中。如果一行还有4个单词,将被分别存储进$1$2$3$4中,其中$0代表整行。NF也是一个内建的变量,代表该行中分割后的变量数。
在上诉例子中$2和$5分别代表名字和薪水,也可以使用$NF获得薪水,其中$NF代表最后一个字段,在打印语句中逗号是一个连接符号。
6.Awk开始和最后的动作
Awk包含两个重要的关键字BEGIN和END
在BEGIN节中的Actions会在读取文件中的行之前被执行。
而END节中的Actions会在读取并处理文件中的所有行后被执行。
上述的例子为输出结果增加头和尾描述
7.Awk找出员工ID大于200的员工
在上述例子中,$1代表员工ID,如果员工ID大于200则执行默认的打印整行的Action。
8.Awk打印技术部员工
$4代表员工所在的部门,如果等于Technology则打印出整行
~操作符是和正则表达式中的值进行比较,如果匹配则打印整行
9.Awk打印技术部门的员工数
在下面的例子中,检查员工的部门是否是Technology,如果是则递增count变量的值。Count变量的值在BEGIN的Actions中被初始化为0。
在处理的最后(END的Actions),仅仅打印出Technology部门的人数
分享到:
相关推荐
本资料包是针对awk脚本学习的快速入门教程,旨在帮助初学者快速掌握awk的基本用法和高级技巧。 一、awk简介 awk是由Aho、Weinberger和Kernighan三位大牛命名的(取首字母),最初设计用于处理结构化的文本数据,如...
- **在线文档**: GNU Awk官方手册和相关的在线资源可以作为学习参考。 以上知识点涵盖了Awk的基础概念、程序结构、字段和记录的处理方法、格式化输出的技巧,以及Awk命令在实际中的应用。通过深入学习和实践这些...
现在,我们通过几个示例来学习awk `print`的使用: **示例1**:默认行为 ```bash awk '{print;}' employee.txt ``` 这个例子中没有指定模式,所以awk会打印`employee.txt`文件的每一行。 **示例2**:基于模式的...
AWK中的print和printf函数用于输出,其中print是最基本的输出函数,而printf则能提供更多的格式化选项,类似于C语言的printf函数。它们可以根据需要在输出时进行格式化,包括控制数字的小数位数、填充字符、宽度等。...
- `'{ print $0 }'` 是AWK的典型用法,它会打印输入的整行。 - 分隔符:默认情况下,AWK使用空格或制表符作为字段分隔符,但可以通过`FS`变量自定义,如`'{FS=":"}'`设置为冒号。 - 输出分隔符:`OFS`变量可以...
通过深入学习这些章节,你可以掌握AWK的基本概念和高级技巧,从而在数据处理任务中发挥出AWK的强大能力。无论你是数据分析新手还是经验丰富的开发者,理解并熟练运用AWK都能极大地提升你的工作效率。
### awk入门级教材知识点详解 #### 一、awk简介 **awk** 是一种强大的文本处理工具,主要用于在一组文件上查找符合特定模式的行或字段,并执行相应的操作。它简化了数据选择和转换的过程,使其变得更为直观和简单...
`awk`的学习需要结合实际案例进行,通过编写和运行脚本来熟悉其用法和功能。 总结,`awk`是Linux文本处理的重要工具,其灵活性和强大的功能使其在数据分析、日志分析等领域有着广泛的应用。通过深入学习和实践,...
### awk学习要点详解 #### 一、awk简介与基本用法 **awk** 是一种强大的文本处理工具,常用于Linux/Unix系统中进行数据提取、分析及格式化工作。其名称来源于三位创建者:Alfred Aho、Brian Kernighan 和 Peter ...
【awk参考资料】深入理解awk awk是一种强大的文本分析工具,主要在Linux/Unix环境中使用,由Alfred Aho、Brian Kernighan和Peter Weinberger三...学习并熟练掌握awk,将极大地提升你在文本处理和数据分析方面的效率。
awk '/error/ {print $0}' ``` ### 3. 字段分隔符 默认情况下,awk使用空格或制表符作为字段分隔符,但可以通过`FS`变量自定义。例如,将字段分隔符设置为逗号: ```awk awk 'BEGIN {FS = ","} {print $1}' ``` ...
通过这个学习文档,你可以逐步掌握AWK脚本的使用,进一步提升在Linux环境下的文本处理能力。AWK的强大在于其灵活性和高效性,能帮助你解决许多数据分析和文本处理问题。在实际工作中,熟练运用AWK可以大大提高工作...
在"awk学习资料最近整理的资料"这个压缩包中,你可以找到一系列关于awk的学习资源,帮助你掌握这一技能。以下是一些主要的awk知识点: 1. **基本语法**:awk的工作原理基于行处理,每一行被视为一个记录,每个记录...
`awk` 是一种强大的文本分析工具,常用于处理和解析结构化的文本文件,如日志文件、配置文件等。在Linux和Unix系统中,`awk` ...通过不断地实践和学习,你将能够有效地利用 `awk` 解决日常工作中遇到的文本处理问题。
学习AWK的最佳方式是从实践中学习。除了本文提供的基础指南外,还可以参考以下资源: 1. **官方文档**:访问GNU AWK的官方网站获取最新文档。 2. **在线教程**:互联网上有许多优秀的AWK教程,适合初学者和高级用户...
awk '{ sum += $3 } END { print sum }' processes 9. 输出/输入重定向 使用 awk 输出/输入重定向来处理数据: awk '{ print }' processes > output 这些实例只是 awk 的一些基本应用,awk 的功能远远不止这些。...
以下是对标题和描述中提及的AWK学习知识点的详细阐述: 1. **AWK的定义**: AWK是由Aho、Weinberger和Kernighan三位开发者命名的样式扫描和处理语言,主要用于从文本文件中提取数据或对数据进行格式化输出。它的...
AWK是一种非常实用的编程语言,它在文本处理和数据分析方面表现出色。它的特点是编写程序非常简单,即便是只有一两行的程序也能完成复杂的任务。...对于任何需要处理文本数据的用户,AWK都值得学习和掌握。
- **启动AWK**:通过命令行启动AWK,例如`awk '{print}' /etc/passwd`。这条命令会打印出`/etc/passwd`文件的所有内容。 - **代码块与命令**:在AWK中,花括号`{}`用于定义代码块。当代码块内仅包含一条命令时,...
awk是一种强大的文本分析工具,广泛应用于Linux和Unix系统中。...学习awk能够极大地提升在Linux和Unix环境下处理文本数据的能力。通过深入理解和实践,你可以利用awk解决各种数据处理挑战,提高工作效率。