第十二课(下) awk

5. awk

awk 是一个维护和处理文本数据文件的强大语言。在文本数据具有一定的格式时,即每行数据包含多个以分隔符分隔的字段时,显得尤其有用。即便是驶入的文件没有一定的格式,仍然可以使用 awk 进行基本的处理。简言之,awk 是一种能处理从琐碎的小事到日常例行公事的强大语言

5.1 基础语法

5.1.1 语法格式
awk -F<s> '/PATTERN/ {ACTION}' FILE_NAME
或者直接
awk -F<s> '{ACTION}' FILE_NAME

5.1.2 解释
* -F<s>
指定分隔符。 默认是以空格作为分隔符。后续会介绍如何使用 -F 设定分隔符,以及如何在 BEGIN 中设置分隔符

  • /PATTERN/
    指定匹配模式。 如果没有指定匹配模式,则 awk 将处理输入文件中的所有记录

  • {ACTION}
    指定处理方式。 awk 命令中所有的处理方式都要写在花括号中,多个处理方式之间以分号 ’ ; ’ 隔离

  • FILE_NAME
    指定待处理的文件。 可以是多个文件,当然 awk 也支持管道数据

5.1.3 举例

$ awk -F: '/nobody/ {print $1}' /etc/passwd
nobody
  • -F::指定分隔符为:
  • /nobody/:匹配的模式指定为“包含nobody”的
  • {print $1}:执行的动作为打印 $1,其中$1代表以:分隔的第一区段
  • /etc/passwd/:指定所要处理的文件
5.2 awk 程序结构——(BEGIN、body、END 区域)

awk 在执行时分为 预处理、正式处理、后续处理 三个阶段。对应的,在输入 awk 命令时,分为 3 个区域,分别是 BEGIN、body、END。其中 正式处理 阶段是必备的,而预处理和后续处理阶段是可选的

5.2.1 BEGIN(预处理阶段)

  • 语法:
    BEGIN { command1;command2;... }

  • 特点:

    • BEGIN 区域的命令,在 body 之前执行,且只执行一次
    • BEGIN 区域常常用来打印表头信息,初始化变量
    • BEGIN 区域可包含多条命令
    • BEGIN 这个区域的标识,必须是大写的

5.2.2 正式处理

5.2.3 END(后续处理)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值