LinuxLinux学习之路Linux系统

Linux命令学习手册-awk

2019-12-15  本文已影响0人  QuietHeart

awk '条件类型1{动作1} 条件类型2{动作2} ...' filename

功能

相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个『字段』来处理。

描述

awk 的处理流程

  1. 读入第一行,并将第一行的资料填入 0,1, $2…. 等变数当中;

  2. 依据 "条件类型" 的限制,判断是否需要进行后面的 "动作";

  3. 做完所有的动作与条件类型;

  4. 若还有后续的『行』的数据,则重复上面 1~3 的步骤,直到所有的数据都读完为止。

经过这样的步骤,您会晓得, awk 是『以行为一次处理的单位』, 而『以字段为最小的处理单位』。

常用变量(变量名称 代表意义)

NF 每一行 ( $0 ) 拥有的字段总数

NR 目前 awk 所处理的是『第几行』数据

FS 目前的分隔字符,预设是空格键

每一行的每个字段的变量名称就是 $1, $2 … 等。还有个例外,那就是 $0 代表一整行的意思。

注意, awk 后续的所有动作以 ' 括住, 所以,内容如果想要以 print 打印时,记得,非变量的文字部分, printf 提到的格式中,都需要使用双引号.

逻辑运算符号

大于

< 小于

= 大于或等于

<= 小于或等于

== 等于

!= 不等于

举例

假设输入输出如下:

$last

dmtsai   pts/0        192.168.1.12     Mon Aug 22 09:40   still logged in

root     tty1                          Mon Aug 15 11:38 - 11:39  (00:01)

reboot   system boot  2.6.11           Sun Aug 14 18:18         (7+15:41)

dmtsai   pts/0        192.168.1.12     Fri Aug 12 12:07 - 12:08  (00:01)

假设如下表(pay.txt)

Name    1st     2nd     3th

VBird   23000   24000   25000

DMTsai  21000   20000   23000

Bird2   43000   42000   41000

其它

参考资料: 《鸟哥的私房菜》

上一篇下一篇

猜你喜欢

热点阅读