发新话题
打印

Awk各部分详解-字段(5)

Awk各部分详解-字段(5)

每条记录都是由字段组成的,默认情况下,字段间是用空白符(空格或制表符)分隔。如2.2节提到,处理数据的每条记录分隔成一条条字段,并保存在变量$1~$100,而字段数保存在内置变量NF中,并且随着记录的改变字段数也随之不同

范例 3-4
[root@localhost script]# awk -F ':' '{print NR, $1,$3,$7}' passwd
1 root 0 /bin/bash
2 bin 1 /sbin/nologin
3 daemon 2 /sbin/nologin
4 adm 3 /sbin/nologin
5 lp 4 /sbin/nologin
6 sync 5 /bin/sync
7 shutdown 6 /sbin/shutdown
… … …
### 解析 ###
打印文件passwd每一行记录号(NR)和第1,第3,第7字段。
范例 3-5
[root@localhost script]# awk -F ':' '{print $0,NF}' passwd
root:x:0:0:root:/root:/bin/bash 7
bin:x:1:1:bin:/bin:/sbin/nologin 7
daemon:x:2:2:daemon:/sbin:/sbin/nologin 7
adm:x:3:4:adm:/var/adm:/sbin/nologin 7
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 7
sync:x:5:0:sync:/sbin:/bin/sync 7
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 7
… … …
### 解析 ###
打印文件passwd每条记录,后面加上该记录的字段数。

         输入字段分隔符

    Awk内置变量FS保存了输入字段分隔符的值。默认情况下输入字段分隔符FS的值为空白符(空格或制表符),并且删除各字段前多余的空格或制表符。有两种方法可以改变输入字段分隔符的值,第一种是:在BEGIN语句中指定FS的值;第二种是:在命令行中加入“-F”选项来指定FS的值。

范例 3-6
方法一:在BEGIN语句中指定FS的值
[root@localhost script]# awk 'BEGIN {FS=":"}{print NR,$1,$3,$7}' passwd
1 root 0 /bin/bash
2 bin 1 /sbin/nologin
3 daemon 2 /sbin/nologin
4 adm 3 /sbin/nologin
5 lp 4 /sbin/nologin
6 sync 5 /bin/sync
7 shutdown 6 /sbin/shutdown
… … …
### 解析 ###
BEGIN语句中指定FS的值为,并输出每一行记录号(NR)和第1,第3,第7字段。
范例 3-7
方法二:在命令行中加入“-F”选项来指定FS的值
[root@localhost script]# awk -F ':' '{print NR,$1,$3,$7}' passwd
1 root 0 /bin/bash
2 bin 1 /sbin/nologin
3 daemon 2 /sbin/nologin
4 adm 3 /sbin/nologin
5 lp 4 /sbin/nologin
6 sync 5 /bin/sync
7 shutdown 6 /sbin/shutdown
… … …
### 解析 ###
在命令行中加入“-F”选项来指定FS的值为,并输出每一行记录号(NR)和第1,第3,第7字段。



№→  Learning 《Perl Programming》

TOP

发新话题
版块跳转 
Powered by Discuz! 6.1.0 © 2001-2007 Comsenz Inc.
---------------------------------------------------------------------------------------
本论坛所有文章为会员所发布,会员拥有该内容的所有权力及责任,转载时请注明出处!
站务管理员:我心飞翔 QQ:12012805(请直奔主题) 有害信息举报电话 15914350818
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触和有损学校声誉不属实的言论!
粤ICP备06054096号 茂名市公安局网警支队备案: 4409813060501

Processed in 0.523722 second(s), 9 queries, Gzip enabled.