分页: 1 / 1

awk编程的问题

发表于 : 2011-09-10 10:49
7rack
lab.data文件是

代码: 全选

 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 
要求写一个脚本
a.打印Savage中所有的名字和号码
b.打印Chet的捐赠数额
c.打印所有第一个月捐赠数额为250的人的资料
我写的脚本facts

代码: 全选

BEGIN{FS=": "}
/Savage/{print $1,$2,$4}
/Chet/{print $5,$6,$7}
$4==250{print $1,$2,$4
运行结果不对

代码: 全选

  awk -f facts lab.data
Jody Savage:[206] 548-1278:15:188:150  
Dan Savage:[406] 298-7744:450:300:275  
  
Tom Savage:[408] 926-3456:250:168:200
然后我用下面的方法得到了正确的结果

代码: 全选

 awk -F'[: ]' '$2~/Savage/{print $1,$2,$4}\
> $1~/Chet/{print $5,$6,$7}\
> $5==250{print $1,$2,$4}' lab.data 
请教正确的facts文件怎么写?

Re: awk编程的问题

发表于 : 2011-09-10 11:34
我就是我2
:em20 :em20 你这表格没表头的。

Re: awk编程的问题

发表于 : 2011-09-10 19:53
fnan
哪里来的$6$7?

Re: awk编程的问题

发表于 : 2011-09-11 10:32
7rack
我就是我2 写了::em20 :em20 你这表格没表头的。
:em23 不懂什么意思呀?

Re: awk编程的问题

发表于 : 2011-09-11 10:33
7rack
fnan 写了:哪里来的$6$7?
仔细看,使用:和空格做分割苻的 :em03

Re: awk编程的问题

发表于 : 2011-09-11 12:48
我就是我2
7rack 写了:
我就是我2 写了::em20 :em20 你这表格没表头的。
:em23 不懂什么意思呀?
name 和 number就是表头。。。哎。可以没有边框,但是要依次说明数据的意义,否则只能猜测。
t.png
t.png (3.56 KiB) 查看 830 次

Re: awk编程的问题

发表于 : 2011-09-11 18:39
7rack
我就是我2 写了:要依次说明数据的意义,否则只能猜测。
o,依次是姓名Mike Harrington,区号[510],电话548-1278,然后是第一、二、三个月的捐款数额250:100:175

Re: awk编程的问题

发表于 : 2011-09-11 20:46
我就是我2
BEGIN{FS=": "}
/Savage/{print $1,$2,$4}
/Chet/{print $5,$6,$7}
$4==250{print $1,$2,$4
最后一行代码少了 }
你不懂用FS
FS="[ :]"
另外域也写错了。
awk -F'[: ]' '$2~/Savage/{print $1,$2,$4}\
> $1~/Chet/{print $5,$6,$7}\
> $5==250{print $1,$2,$4}' lab.data
:em20 :em20

Re: awk编程的问题

发表于 : 2011-09-11 22:28
7rack
偶太粗心了,学习ing :em03