第七章 Shell文本处理三剑客之awk

简介:

本章大纲:

wKiom1h9omvAvRPSAAAghVFT2lM506.png

8.3 awk

awk是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件、数据排序、计算以及生成报表等等。

在Linux系统下默认awk是gawk,它是awk的GNU版本。可以通过命令查看应用的版本:ls -l /bin/awk

基本的命令语法:awk option 'pattern {action}' file

其中pattern表示AWK在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。花括号用于根据特定的模式对一系列指令进行分组。

awk处理的工作方式与数据库类似,支持对记录和字段处理,这也是grep和sed不能实现的。

在awk中,缺省的情况下将文本文件中的一行视为一个记录,逐行放到内存中处理,而将一行中的某一部分作为记录中的一个字段。用1,2,3...数字的方式顺序的表示行(记录)中的不同字段。用$后跟数字,引用对应的字段,以逗号分隔,0表示整个行。

8.3.1 选项

选项

描述

-f program-file

从文件中读取awk程序源文件

-F fs

指定fs为输入字段分隔符

-v var=value

变量赋值

--posix

兼容POSIX正则表达式

--dump-variables=[file]

把awk命令时的全局变量写入文件,

默认文件是awkvars.out

--profile=[file]

格式化awk语句到文件,默认是awkprof.out

8.3.2 模式

常用模式有:

Pattern

Description

BEGIN{ }

给程序赋予初始状态,先执行的工作

END{ }

程序结束之后执行的一些扫尾工作

/regular  expression/

为每个输入记录匹配正则表达式

pattern &&  pattern

逻辑and,满足两个模式

pattern || pattern

逻辑or,满足其中一个模式

! pattern

逻辑not,不满足模式

pattern1, pattern2

范围模式,匹配所有模式1的记录,直到匹配到模式2

而动作呢,就是下面所讲的print、流程控制、I/O语句等。

示例:

1)从文件读取awk程序处理文件

1
2
3
4
5
6
# vi test.awk
{print$2}
# tail -n3 /etc/services |awk -f test.awk
48049 /tcp
48128 /tcp
49000 /tcp

2)指定分隔符,打印指定字段 

1
2
3
4
相关文章
|
3月前
|
Linux Shell Perl
Linux下的Shell基础——文本处理工具(五)
Linux下的Shell基础——文本处理工具(五)
31 1
Linux下的Shell基础——文本处理工具(五)
|
6月前
|
运维 Shell C语言
运维(20)- shell awk
运维(20)- shell awk
33 0
|
5月前
|
Shell 数据处理 Perl
shell脚本里的三剑客之一awk
shell脚本里的三剑客之一awk
54 2
|
9天前
|
机器学习/深度学习 Shell Perl
第七章 Shell文本处理三剑客之sed
第七章 Shell文本处理三剑客之sed
|
2月前
|
Shell Linux C语言
【Shell 命令集合 文本处理工具】Linux 字段连接 join 命令使用指南
【Shell 命令集合 文本处理工具】Linux 字段连接 join 命令使用指南
32 1
|
2月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
34 0
|
8月前
|
关系型数据库 MySQL Shell
数据库备份和Shell基础测试及AWK(运维)
数据库备份和Shell基础测试及AWK(运维)
|
9月前
|
Shell Perl
Shell基础学习---4、文本处理工具、综合应用案例(归档文件、发送信息)
Shell基础学习---4、文本处理工具、综合应用案例(归档文件、发送信息)
|
9月前
|
Shell Linux Perl
Shell 基本(整数、小数、浮点数)运算($[]、$(())、let、expr、awk、bc)
Shell 基本(整数、小数、浮点数)运算($[]、$(())、let、expr、awk、bc)
140 0
|
11月前
|
存储 运维 Unix
shell脚本应用——文本处理器
shell脚本应用——文本处理器