[Shell] awk学习(4)-read input file

NR,FNR,NF的定义在   http://blog.itpub.net/24237320/viewspace-2072968/  
FS,OFS,RS,ORS的定义在   http://blog.itpub.net/24237320/viewspace-2062456/


下面为其他的情况或者例子
1.更改field后,print内容会有发生变化
[/tmp/test]# awk '{print $2;$2=$2-10;print $0}' ff2        #$2发生变更后,$0内容也跟着发生变化
13
Jan 3 25 15 115


2.print虚拟列
[/tmp/test]# awk '{$6=$2+$3+$4+$5;print $6}' ff2
[/tmp/test]# awk '{$6=$2+$3+$4+$5;print $6,$0}' ff2         #会加上后面添加的$6列,增加的field会在$0中显示
168 Jan 13 25 15 115 168
.....


增加了虚拟列后,相应的NF数值也会增加
[/tmp/test]# awk '{$6=$2+$3+$4+$5;print $6,$0,NF}' ff2
168 Jan 13 25 15 115 168 6


也可以减小NF
[/tmp/test]# awk '{NF=2;print NF,$0}' ff1    #NF虽然减少了,但是$0不会发生变化


3.NF定义多个分隔符
[/tmp/test]# awk 'BEGIN{FS=" |-|/"}{print $1,$2,$3,$4,$5,$6,$7,$8}' ff1
[/tmp/test]# awk -F " |-|/" '{print $1,$2,$3,$4,$5,$6,$7,$8}' ff1


4.RS 使用空白行作为换行符
[/tmp/test]# cat ff3
Jane Doe
123 Main Street
Anywhere, SE 12345-6789


John Smith
456 Tree-lined Avenue
Smallville, MW 98765-4321


Bruce Li
789 SuZhou
JiangSu China


[/tmp/test]# awk 'BEGIN{RS="";FS="\n";OFS="  $$$  "}{print $1,$2,$3}' ff3                  #RS=""使用空白行作为换行符,
Jane Doe  $$$  123 Main Street  $$$  Anywhere, SE 12345-6789
John Smith  $$$  456 Tree-lined Avenue  $$$  Smallville, MW 98765-4321
Bruce Li  $$$  789 SuZhou  $$$  JiangSu China

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24237320/viewspace-2085546/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24237320/viewspace-2085546/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值