准备一个数据文件 awk-sample-salary.txt
一、Pattern {Action} 详解
这一节的目标:详解 Pattern和{Action}的组合方式, 这两者各自的详解请看下面
这里以简单的正则表达式作为Pattern为例,(Pattern本身又有多种case、组合,请参考 “ 二、Pattern详解 ”)
1.单个Pattern {Action}
/^A/{print} #筛选出以A开头的行,并打印该行数据
//{print} #打印每一行, //表示无条件的匹配,即匹配所有的行 , {print} 没有指定哪一行,默认就是整行,即{print $0}
// #省略掉Action,默认就是 {print}
{print} #省略掉Pattern,默认就是无条件的匹配,即匹配所有的行
执行结果
2.多个 Pattern {Action}
通过;来分割,或者省略;
/^A/{print "Department is A"} ; /John/{print " and Name is Johe"}
/^A/{print "Department is A"} /John/{print " and Name is Johe"}
二、Pattern详解
参见 http://www.aslibra.com/doc/awk.htm 的附录A, 补充如下
摘录GAWK的man帮助:
AWK patterns may be one of the following:
BEGIN
END
/regular expression/
relational expression
pattern && pattern
pattern || pattern
pattern ? pattern : pattern
(pattern)
! pattern
pattern1, pattern2
1. 正则表达式 /regular expression/
/^A/ 行匹配, 等价于 $0 ~ /^A/
$1~// 列匹配, 等价于 // {if(match($1,//)) print}
$1!~// 列匹配取反,等价于 // {if(!match($1,//)) print}
2. 关系表达式 relational expression
注意:Pattern里的关系不能出现 if else ,只有在 {action} 里才可以有if else 等控制语句
awk 提供 C 语言中常见的关系运算符(Relational Operators) :
>,>=,<,<=,==,!=
NF==5 {print}
NR>=3 && NR<=5 {print} #打印第3行到第5行,
$2!="Jhone" {print}
3. Patterns组合
多个Pattern可以通过关系运算符来组合成更复杂的一个Pattern , 加上() 可以控制优先级.
3.1 && || ! ()
(pattern1 || pattern2) && (!pattern3)
3.2 pattern ? pattern : pattern (三目运算符)
3.3 特殊的组合 : pattern1,pattern2
pattern1,pattern2 {action}: 从 匹配pattern1的行(假设是row1)到匹配pattern2的行(假设是row2),
从row1到row2之间的所有行 都执行{Action}
NR==3,NR==5 {print} #打印第3行到第5行
三、Action详解
参见 http://www.aslibra.com/doc/awk.htm 的附录B
文档摘录:
- 大小: 9.4 KB
- 大小: 30.8 KB
- 大小: 17.6 KB
分享到:
相关推荐
### awk命令详解大全 #### 1. 什么是awk? awk是一种强大的文本处理工具,由Aho、Weinberg和Kernighan三位计算机科学家共同创造。它的名称来源于这三位创造者的姓氏首字母。awk的功能远超一般的文本处理工具,它...
* 使用 AWK 需要指定 pattern 和 action,pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。 * AWK 可以以命令行方式、shell 脚本方式和将所有的 AWK 命令插入一个单独文件...
awk 的基本语法是 `awk [ -F re] [parameter...] ['pattern {action}' ] [-f progfile][in_file...]`。在这里,`-F re` 指定输入字段的分隔符,`pattern` 是匹配模式,`action` 是匹配后执行的代码块,`-f progfile`...
### awk使用手册详解知识点 #### 一、awk简介与适用场景 - **awk**是一种用于文本处理的强大脚本语言,特别适用于处理具有行(Record)和字段(Field)形式的数据。 - **适用问题**:awk适合处理那些需要从文本文件...
`awk`可以同时处理多个文件,如`awk 'ACTION' file1 file2 ...`。当处理多个文件时,`FNR`会跟踪每个文件的行数。 **9. 自定义函数** `awk`允许用户定义自己的函数,提高代码复用性和可读性。例如: ```awk ...
**awk命令详解** awk是一种强大的文本分析工具,广泛应用于Linux和Unix系统中,用于处理结构化数据,如CSV、TSV格式的文件。它通过模式匹配和动作来处理输入流中的每一行,允许用户定制复杂的文本处理逻辑。下面将...
awk的基本使用格式是:`awk 'pattern {action}' file`。pattern可以省略,此时默认对每一行都执行action。 2. **模式匹配** - `BEGIN`和`END`模式:`BEGIN`模式在处理任何输入行之前执行,`END`模式在处理完所有...
- **基本语法**:`awk 'pattern { action }' 文件` - **常用字段和变量**: - `$1, $2, ...`:代表每一列的值。 - `NR`:当前处理的记录(行)数。 - `NF`:当前行中的字段数。 - **常用操作**: - `print`:...
awk 'pattern {action}' ``` - `pattern`:匹配模式,可以是正则表达式或其他条件。 - `{action}`:当模式匹配时执行的命令。 例如,以下命令会打印出所有包含"error"的行: ```bash awk '/error/ {print $0}' ``...
### awk命令详解:快速进阶与简洁入门 #### 第一章:awk的调用方式 在Shell编程中,`awk`是一种极其强大的工具,主要用于文本数据的处理与分析。它能够方便地处理列数据,因此在数据分析、日志处理等方面应用广泛...
awk 'pattern { action }' 文件名 ``` - **pattern**:匹配条件,可以是正则表达式或其他条件语句。 - **action**:匹配时执行的操作。 ##### 3. 字段分割 `awk` 默认以空格作为字段分隔符,但可以通过 `-F` 或 `...
awk '/pattern/{action}' file ``` 这里,如果行匹配模式`pattern`,则执行`action`。 `awk`还支持在脚本文件中编写更复杂的程序逻辑,通过`-f script.awk`来调用。 总之,`awk`是Linux系统中处理文本的强大工具,...
awk 的架构包括三个部分: Pattern、Action 和 Output。Pattern 用于匹配记录,Action 用于处理记录,Output 用于输出处理结果。 awk 手册中文版提供了 awk 的基础知识和实践指南,旨在帮助读者快速掌握 awk 的使用...
awk 'pattern {action}' filename ``` #### 三、Awk各部分详解 **3.1 记录和字段** - **记录**:在Awk中,每行文本被视为一个记录。 - **字段**:每个记录可以被进一步划分为字段。默认情况下,空格或制表符...
1. **基本语法**: `awk 'pattern {action}' filename` - **示例**: `awk '{print $1}' input.txt` - 打印文件 `input.txt` 的每一行的第一个字段。 2. **字段分割**: 默认以空格作为字段分隔符。 - **示例**: `...
### awk 使用手册详解 #### 一、awk简介与基本概念 awk 是一款强大的文本处理工具,在 Unix 和类 Unix 操作系统中广泛使用。它最初由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 开发,因此得名 awk(取自...
awk '/pattern/ { action }' file ``` 这里`pattern`是需要匹配的模式,而`action`是在模式匹配成功时执行的动作。 6. **字段分隔符**: awk默认以空格或制表符作为字段分隔符,但可以通过指定FS(Field ...
awk 的基本语法为 `awk 'pattern {action}' file`,其中 `pattern` 是模式,`action` 是对匹配的操作,`file` 是要处理的文件。 变量: * `ARGC`:命令行变元个数 * `ARGV`:命令行变元数组 * `FILENAME`:当前...
awk '{pattern + action}' {filenames} ``` - `pattern` 是一个正则表达式或条件,当某行匹配该模式时,`action` 将被执行。 - `action` 是一系列命令,可以包含变量赋值、条件判断、循环等。 - `{}` 用于分组命令...