awk编程的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
7rack
帖子: 96
注册时间: 2011-08-17 22:49

awk编程的问题

#1

帖子 7rack » 2011-09-10 10:49

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文件怎么写?
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: awk编程的问题

#2

帖子 我就是我2 » 2011-09-10 11:34

:em20 :em20 你这表格没表头的。
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: awk编程的问题

#3

帖子 fnan » 2011-09-10 19:53

哪里来的$6$7?
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
7rack
帖子: 96
注册时间: 2011-08-17 22:49

Re: awk编程的问题

#4

帖子 7rack » 2011-09-11 10:32

我就是我2 写了::em20 :em20 你这表格没表头的。
:em23 不懂什么意思呀?
头像
7rack
帖子: 96
注册时间: 2011-08-17 22:49

Re: awk编程的问题

#5

帖子 7rack » 2011-09-11 10:33

fnan 写了:哪里来的$6$7?
仔细看,使用:和空格做分割苻的 :em03
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: awk编程的问题

#6

帖子 我就是我2 » 2011-09-11 12:48

7rack 写了:
我就是我2 写了::em20 :em20 你这表格没表头的。
:em23 不懂什么意思呀?
name 和 number就是表头。。。哎。可以没有边框,但是要依次说明数据的意义,否则只能猜测。
t.png
t.png (3.56 KiB) 查看 828 次
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
头像
7rack
帖子: 96
注册时间: 2011-08-17 22:49

Re: awk编程的问题

#7

帖子 7rack » 2011-09-11 18:39

我就是我2 写了:要依次说明数据的意义,否则只能猜测。
o,依次是姓名Mike Harrington,区号[510],电话548-1278,然后是第一、二、三个月的捐款数额250:100:175
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: awk编程的问题

#8

帖子 我就是我2 » 2011-09-11 20:46

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
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
头像
7rack
帖子: 96
注册时间: 2011-08-17 22:49

Re: awk编程的问题

#9

帖子 7rack » 2011-09-11 22:28

偶太粗心了,学习ing :em03
回复