awk 工作原理

在详细阐述awk命令之前,我们首先了解一下awk是如何完成自己的任务的,我们将以一个名为names(仅有三行记录)的文件为例进行说明。

Tom    Savage   100
Molly  Lee      200
John   Doe      300

使用下面的awk命令:

$awk  '{print $1,$3}' names

1.awk使用一行作为输入(通过文件或者管道),并将这一行赋给内部变量$0 ,默认时每一行也可以称为一个记录,以换行符结束。

2.然后,行被空格分解成字段(单词),每一个字段存储在已经编号的变量中,从$1 开始,可以多达100 个字段。

3.awk如何知道空格是用来分隔字段的呢?因为有另一个内部变量FS用来确定字段的分隔符。初始时,FS被赋为空格(包含制表符和空格符)。如果需要使用其他的字符分隔字段,如冒号或破折号,则需要将FS 变量的值设为新的字段分隔符。

4.awk打印字段时,将以下面方式使用print函数。

{print  $1 , $3 }

输出显示了每个字段使用空格进行分隔,如下所示。

Tom  100
Molly  200
John  300

awk在Tom和100之间加入了空格,因为在$1和$3之间存在一个逗号。逗号比较特殊,它映射为另一个内部变量,称为输出字段分隔符(OFS), OFS默认为空格。逗号被OFS变量中存储的字符替换。

5 awk输出之后,将从文件中获取另一行,并将其存储到$0中,覆盖原来的内容,然后将新的字符串分隔成字段并进行处理。这个过程将持续到整个文件的所有行都处理完毕。

参考资料:http://www.linuxawk.com/jiaocheng/58.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值