1. 日志信息如下:
Mike Harrington:[510] 548-1278:250:100:175 Christian Dobbins:[408] 538-2358:155:90:201 Susan Dalsass:[206] 654-6279:250:60:50 Archie McNichol:[206] 548-1348:250:100:175 Jody Savage:[206] 548-1278:15:188:150 Guy Quigley:[916] 343-6410:250:100:175 Dan Savage:[406] 298-7744:450:300:275 Nancy McNeil:[206] 548-1278:250:80:75 John Goldenrod:[916] 348-4278:250:100:175 Chet Main:[510] 548-5258:50:95:135 Tom Savage:[408] 926-3456:250:168:200 Elizabeth Stachelin:[916] 440-1763:175:75:300
此日志中中包含名字,电话号码和过去三个月里的捐款。
1) 显示所有电话
awk 'split($3,num,":") {print num[1]}' awkdata
2) 显示Dan的电话号码
awk '{if($1=="Dan"){ split($3,num,":"); print num[1]}}' awkdata
3) 显示Susan的名字和电话号码
awk '{if($1=="Susan"){ split($3,num,":"); printf("%s:%s\n",$1,num[1])} }' awkdata
4) 显示所有以D开头的姓
awk --posix '/[A-Z]* D/ {split($2,name,":");print name[1]}' awkdata
5) 显示所有以一个C或E开头的名
awk --posix '/^[CE].*/ { print $1 }' awkdata
6) 显示所有只有四个字符的名
awk --posix '/^[A-Za-z]{4} / { print $1 }' awkdata
7) 显示所有区号为916的人名
awk --posix '/:\[916\]/ { split($2,name,":");print $1,name[1] }' awkdata
8) 显示Mike的捐款.显示每个值时都有以$
开头.如$250$100$175
awk --posix '/^Mike/ { split($3,money,":");printf("$%s$%s$%s\n",money[2],money[3],money[4]) }' awkdata
9) 显示姓,其后跟一个逗号和名,如Jody,Savage
awk '{split($2,name,":"); printf("%s,%s\n",name[1],$1)}' awkdata
10) 写一个awk的脚本,它的作用:
a. 显示Savage的全名和电话号码
b.显示Chet的捐款
c.显示所有头一个月捐款$250
的人名
awk --posix '/Savage/ {split($2,name,":"); split($3,phone,":");printf("%s %s:%s\n",$1,name[1],phone[1])}' awkdata awk --posix '/Chet/ { split($3,money,":");printf("Chet的捐款:%s,%s,%s\n"),money[2],money[3],money[4]}' awkdata awk --posix '/-[0-9]{4}:250/ { split($2,name,":");printf("%s %s\n"),$1,name[1]}' awkdata
最后一道这种方式怎么写成一个脚本?