Awk工作原理-数据处理过程(3)
大家应该对/etc/passwd密码文件都比较熟悉了,它的格式如下: root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
… … …
使用awk命令如下:
[root@localhost script]# awk -F ':' '{print $1,$3}' /etc/passwd
● Awk使用/etc/passwd文件中一行做为输入,并将这一行赋给内部变量$0,以换行符结束。
● 然后,行被指定的“:”分隔符分解成字段,每一个字段存储在以编号的变量中,从$1开始,可以多达100个字段。
Awk的分隔字段的分隔符是用一个内部变量FS
来保存的。初始时,FS被赋值为空格(包括制表符和空格符)。如果要改变默认的分隔符就用“-F”选项加上要使用的分隔符。
● Awk打印字段时,使用print函数来进行。
{print $1,$3}
输出显示每个字段是使用空格进行分隔,如下:
root 0
bin 1
daemon 2
adm 3
… … …
Awk在root和0之间加入了空格,因为在$1和$3之间有个逗号。逗号映射着另一个内部变量,叫做输出字段分隔符(output field separator, OFS),OFS默认是空格。逗号给OFS变量中存储的字符替换。
● Awk输出之后,将从文件中获取下一行,并将其存储到$0中,覆盖原来的内容。然后将新的字符串分隔成字段并进行处理。就这样直到文件所有的行都进行完后结束。
[ 本帖最后由 lvdbing 于 2008-4-22 02:19 编辑 ]