awk命令(有自己的语言:AWK程序设计语言)
awk是行处理器:相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息。
awk处理过程:依次对每一行进行处理,然后输出。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
使用模式: awk '{pattern + action}' {filenames}
pattern:表示AWK在数据中查找的内容
action:找到匹配内容时所执行的一系列命令
filenames:为输入文件
例:awk '{print $0}' /etc/passwd
执行时,它依次对 /etc/passwd 中的每一行执行 print 命令,完成之后,讲所有输出都发送到stdout。
awk的参数
-F ":"
,-F用于指定分隔符,可以指定多个分隔符,这些分隔符将一行文本分隔成多个独立文本信息,然后便可以打印出对应的信息。
NR
:对行进行选择, awk '{if(NR>=20 && NR<=30) print $1}' test.txt
表示输出text.txt内的第20行到第30行的内容。
BEGIN和END模块
通常,对于每个输入行, awk 都会执行每个脚本代码块一次。然而,在许多编程情况中,可能需要在 awk 开始处理输入文件中的文本之前执行初始化代码。对于这种情况, awk 允许您定义一个 BEGIN 块。因为 awk 在开始处理输入文件之前会执行 BEGIN 块,因此它是初始化 FS(字段分隔符)变量、打印页眉或初始化其它在程序中以后会引用的全局变量的极佳位置。awk 还提供了另一个特殊块,叫作 END 块。 awk 在处理了输入文件中的所有行之后执行这个块。通常, END 块用于执行最终计算或打印应该出现在输出流结尾的摘要信息。
例:ll |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}'
统计文件夹下文件占用的字节数,在BEGIN阶段初始化size,在END阶段将统计的size信息输出。
awk内置变量
awk正则
awk常用字符串函数