Linux系统

Linux - 数据处理工具awk

2019-08-09  本文已影响14人  熊猫人和熊猫猫

相较于sed常常作用于一整个行的处理,awk则比较倾向于一行当中分成数个“字段”来处理。因此,awk非常适合小型的数据处理。

1.了解awk的“工作习性”

在学习awk操作之前先了解一下:

awk默认是以行为单位处理文本,$0指文本的一行,$1表示文本行中的第1个字段,$2表示文本行中的第2个字段,$3依次往后类推...(默认分隔符为“空格键”或“tab键”)

2.从command认识awk

没有pattern的存在,awk也可以发挥很大的作用,就像这种命令形式:
awk '{command1};{command2}......' filename
可以这么应用:

3.从pattern认识awk

由第2小节里可以看到,awk中的command是可以单独使用的(因为没有pattern对文本行进行模式限定,就代表着awk要对整个文本进行相应command操作)。
而pattern也是可以单独使用的,它使用起来倒有点撷取命令中的grep(没有command,就意味着awk只会将符合pattern要求的文本行拽出来)。

这里面涉及到一些运算符号

  • 逻辑运算 (<,>,<=,>=,等于==,不等于!=)
  • 数学运算(+,-,*,/,%)
  • 关系运算(与&& 、或||,非 !)
  • 正则运算(匹配,~!不匹配,内容放在/ /中间)

4.awk认知升级

这里认识几个awk的变量

  • NR 代表行号
  • NF 文本行被分割的字段数目(列数)
  • FS 指定列分隔符
  • OFS指定列输出分隔符

练习一下: awk '{FS="\t";OFS=","};{print $1,$2}' a.txt 识别a.txt中以\t为分隔符的字段,并在输出时将其转换为,然后打印第1列和第2列
(这是2个command组成的awk操作,可以看到多个command使用时可以用{}包裹起来,然后用;分隔)

⚠️几个重要注意事项:

Postscript:
猫毛觉得这个系列讲的awk还是比较通俗易懂的,一个学习系列的链接就挂在这里了,想要深入了解awk的不要错过~

awk从放弃到入门(1):awk基础
awk从放弃到入门(2):awk分隔符
awk从放弃到入门(3):awk变量
awk从放弃到入门(4):awk格式化
awk从放弃到入门(5):awk模式(Pattern)之一
awk从放弃到入门(6):awk模式(Pattern)之二
awk从放弃到入门(7):awk动作总结之一
awk从放弃到入门(8):awk动作总结之二
awk从放弃到入门(9):awk数组详解
awk从放弃到入门(10):awk内置函数

上一篇 下一篇

猜你喜欢

热点阅读