AWK 介绍
内容来自网络:
AWK
是一种优良的文本处理工具,Linux
及 Unix
环境中现有的功能最强大的数据处理引擎之一。
AWK
是一种处理文本文件的语言。它将文件作为记录序列处理。在一般情况下,文件内容的每行都是一个记录。每行内容都会被分割成一系列的域,因此,我们可以认为一行的第一个词为第一个域,第二个词为第二个,以此类推。AWK
程序是由一些处理特定模式的语句块构成的。AWK
一次可以读取一个输入行。对每个输入行,AWK
解释器会判断它是否符合程序中出现的各个模式,并执行符合的模式所对应的动作。
awk、nawk、mawk、gawk
-
awk
: 最初在1977
年完成,1985
年发表了一个新版本的awk
,它的功能比旧版本增强了不少,awk
能够用很短的程序对文档里的资料做修改、比较、提取、打印等处理,如果使用C
或Pascal
等语言编写程序完成上述的任务会十分不方便而且很花费时间,所写的程序也会很大; -
nawk
: 在20
世纪80
年代中期,对awk
语言进行了更新,并不同程度地使用一种称为nawk(new awk)
的增强版本对其进行了替换。许多系统中仍然存在着旧的awk
解释器,但通常将其安装为oawk (old awk)
命令,而nawk
解释器则安装为主要的awk
命令,也可以使用nawk
命令。Dr. Kernighan
仍然在对nawk
进行维护,与gawk
一样,它也是开放源代码的,并且可以免费获得; -
mawk
:mawk
是awk
编程语言的解释器。awk
语言在多媒体数据文件以及文本的检索和处理,算法的原型设计和试验都有广泛的使用。mawk
带给awk
新的概念,它实现了在《The AWK Programming Language》(Aho, Kernighan and Weinberger, The AWK Programming Language, Addison-Wesley Publishing, 1988.被认为是 AWK 手册。)
中定义的awk
语言。mawk
遵循POSIX 1003.2 (草案 11.3)定义的 AWK 语言
,包含了一些没有在AWK
手册中提到的特色,同时mawk
提供一小部分扩展,另外据说mawk
是实现最快的awk
; -
gawk
: 是GNU Project
的awk
解释器的开放源代码实现。尽管早期的GAWK
发行版是旧的AWK
的替代程序,但不断地对其进行了更新,以包含NAWK
的特性;
目前,大家都比较倾向于使用 awk
和 gawk
。
AWK 实战
实战内容来自:
- 酷壳:https://coolshell.cn/articles/9070.html
- 阮一峰:http://www.ruanyifeng.com/blog/2018/11/awk.html
1. 提取操作文本
netstat
命令中提取了如下信息 到 netstat.txt
文件
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 VM_0_15_centos:46174 169.254.0.55:lsi-bobcat ESTABLISHED
tcp 0 0 VM_0_15_centos:ssh 123.123.135.226:13481 ESTABLISHED
tcp 0 0 VM_0_15_centos:ssh 185.127.126.233:51604 ESTABLISHED
udp 0 0 VM_0_15_centos:48963 183.60.82.98:domain ESTABLISHED
udp 0 0 VM_0_15_centos:44597 183.60.83.19:domain ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] DGRAM 7440 /run/systemd/notify
unix 2 [ ]