今天我们继续来探讨awk。
上篇文章,我们对awk进行了一个基本了解,这篇文章讲解awk命令的简单使用。
awk处理过程:依次对每一行处理,然后输出。
awk命令形式:
awk [ -F | -f | -v ] 'BEGIN{}//{commend1;commend2} END{}' file
[ -F | -f | -v ] 可选参数。
-F 指定分隔符,如 awk -F '[-.;]' ;以- . ;三个符号 作为分隔符进行字符串的切分。
-f 调用脚本,如awk -f script.awk file,调用script.awk脚本。
-v 定义变量,如val=value。
' ' 单引号中间是引用代码块,可以编写你自己的命令。
BEGIN 初始化代码块,对每一行进行处理之前,都会调用,主要是引用全局变量,设置FS分割符。
// 匹配代码块,可以是字符串,也可以是正则。如://纯字符匹配 !//纯字符不匹配 ~//字段值匹配 !~//字段值不匹配 ~/a1|a2/字段值匹配a1或a2。
{} 命令代码块,包含一条或者多条命令。
; 多条命令之间用以分割。
END 结尾代码块,在对每一行进行处理之后执行,主要是进行最终的计算,或者输出结尾信息。
一些内置变量和常用的变量(重要):
$0 表示当前行。
$1 表示第一个域(理解为数组中的第一个元素,$2就表示第二个元素,依次类推)。
NF 字段数量变量。
NR 每行的记录号,多文件记录递增。
FNR 与NR类似,不过多文件记录不递增,每个文件都从1开始。
\t 制表符
\n 换行符
FS BEGIN时定义分隔符。
RS 输入的记录分隔符,默认为换行符。
~ 表示匹配,但不是==的精确比较。
!~ 表示不匹配,不精确比较。
FILENAME 文件名。
OFS 输出字段分隔符,默认是空格,可以改为制表符等。
ORS 输出的记录分隔符,默认是换行符。
print 打印指定内容,如:print $0 即表示打印整行内容。
if语句 必须用{}整体括起来,比较的内容用()括起来,如:if(){}。
还有一些其他的条件表达式,如:&& || > < != 等等内容,还有一些输出格式化,如:%-8s等等,在这里就不一 一罗列了相信大家都应该知道的。
今天的内容就到这里了,下一篇文章开始,正式进入我们千万行数据之前的比较,取交集、并集、差集等等。
(完)