Linux强大的awk(二)

今天我们继续来探讨awk。

上篇文章,我们对awk进行了一个基本了解,这篇文章讲解awk命令的简单使用。

awk处理过程:依次对每一行处理,然后输出。

awk命令形式:

awk [ -F | -f | -v ] 'BEGIN{}// 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(){}。

还有一些其他的条件表达式,如:&& || >

今天的内容就到这里了,下一篇文章开始,正式进入我们千万行数据之前的比较,取交集、并集、差集等等。

(完)

Coding 个人笔记

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180607G22J7Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券