LinuxSir.Org  
| 网站首页 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 03-02-14, 00:01 第 31 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

哇~~~这里藏龙卧虎!佩服!
那颠倒名和姓的问题总是不明白!谢谢!总算搞懂啦
代码:
javalee//home/javalee/x>cat sedfile #sed script 1i\ PERSONNEL FILE s/[1-9]*500$// s/^\([a-zA-Z]\+\) \([a-zA-Z]\+\)\(.*\)/\2 \1\3/g $ a\ END javalee//home/javalee/x>sed -f sedfile datafile

此帖于 03-02-14 00:57 被 KornLee 编辑.
  KornLee 当前离线   回复时引用此帖
旧 03-02-14, 01:26 第 32 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

标题: awk命令大练习


awk命令练习.
文件:datafile
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.显示所有电话号码
2.显示Dan的电话号码
3.显示Susan的名字和电话号码
4.显示所有以D开头的姓
5.显示所有以一个C或E开头的名
6.显示所有只有四个字符的名
7.显示所有区号为916的人名
8.显示Mike的捐款.显示每个值时都有以$开头.如$250$100$175
9.显示姓,其后跟一个逗号和名,如Jody,Savage
10.写一个awk的脚本,它的作用:
.显示Savage的全名和电话号码
.显示Chet的捐款
.显示所有头一个月捐款$250的人名.
注:区号本来是圆括号表示的.
  KornLee 当前离线   回复时引用此帖
旧 03-02-14, 08:53 第 33 帖
ykwj121
 
ykwj121 的头像
 
 
注册会员  
  注册日期: Jul 2002
  帖子: 72
  精华: 1
 

哇,佩服佩服。又学到一招。
  ykwj121 当前离线   回复时引用此帖
旧 03-02-14, 09:37 第 34 帖
ykwj121
 
ykwj121 的头像
 
 
注册会员  
  注册日期: Jul 2002
  帖子: 72
  精华: 1
 

不知道对不对:
awk -F: '{if($1 ~ /^Dan /) print $2}' adatafile
awk -F: '{if($1 ~ /^Susan /) print $1":"$2}' adatafile
awk '{if($2 ~ /^D/) print $2}' adatafile |awk -F: '{print $1}'
awk '{if($1 ~ /(^C|^E)/) print $1}' adatafile
awk '{if(length($1)==4) print $1}' adatafile
awk -F: '{if($2 ~ /\[916\]/) print $1}' adatafile
awk -F: '{if($1 ~ /^Mike /) print "$"$3":$"$4":$"$5}' adatafile
awk -F: '{print $1}' adatafile|awk '{print $2","$1}'

#!/bin/awk -f
BEGIN{
FS=":"}
{if($1 ~/ Savage/) print $1":"$2}
{if($1 ~/^Chet /) print "$"$3":$"$4":$"$5}
{if($3 == 250) print $1}
  ykwj121 当前离线   回复时引用此帖
旧 03-02-14, 12:20 第 35 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

兄弟做得太快啦 我刚开始做您就出答案啦! 佩服佩服~~
  KornLee 当前离线   回复时引用此帖
旧 03-02-14, 13:36 第 36 帖
ykwj121
 
ykwj121 的头像
 
 
注册会员  
  注册日期: Jul 2002
  帖子: 72
  精华: 1
 

还要多谢版大啊,你出的这些题目让我受益非浅啊,有很多东西学了一直没有用的机会,越来越淡忘了,这样复习一下,感觉又好起来了。
  ykwj121 当前离线   回复时引用此帖
旧 03-02-14, 23:12 第 37 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

呵~~~因为这三个在UNIX/LINUX上经常用的实用命令,在shell中起很大的用处,sed,grep,awk把UNIX/LINUX的对数据操作的强大功能表现得淋漓尽致,希望兄弟有好的东西别忘了帖出来哟?!
  KornLee 当前离线   回复时引用此帖
旧 03-02-15, 00:46 第 38 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

标题: 请教:)


1.javalee//home/javalee/x>awk -F: '{print $2}' d
2.javalee//home/javalee/x>awk -F: '/Dan/{print $2}' d
3.javalee//home/javalee/x>awk -F: '/Susan/{print $1,$2}' d
4.javalee//home/javalee/x>awk -F: '{print $1}' d|awk '/[a-zA-Z]* D[a-z]/{print $2}'
Dobbins
Dalsass
5.javalee//home/javalee/x>awk '/C|E[a-z]/{print $1}' d
Christian
Chet
Elizabeth
6.??????请指教
7.avalee//home/javalee/x>awk -F: '/(916)/{print $1}' d
8.javalee//home/javalee/x>awk -F: '/Mike/{print "$"$3,"$"$4,"$"$5}' d
$250 $100 $175
9.javalee//home/javalee/x>awk -F: '{print $1}' d|awk '{print $2,",",$1}'

10:
javalee//home/javalee/x>cat awkfile //awk脚本
#awk script
/Savage/{print $1,$2}
/Chet/{print "$"$3,"$"$4,"$"$5}
/250/{print $1,$3}

javalee//home/javalee/x>awk -F: -f awkfile d //运行awk脚本
Mike Harrington 250
Susan Dalsass 250
Archie McNichol 250
Jody Savage (206) 548-1278
Guy Quigley 250
Dan Savage (406) 298-7744
Nancy McNeil 250
John Goldenrod 250
$50 $95 $135
Tom Savage (408) 926-3456
Tom Savage 250
结果咋那么乱?!请指教

此帖于 03-02-15 00:49 被 KornLee 编辑.
  KornLee 当前离线   回复时引用此帖
旧 03-02-15, 21:57 第 39 帖
Snoopy
 
Snoopy 的头像
 
 
★☆★版主☆★☆  
  注册日期: Jan 2003
  我的住址: Linux Pet
  帖子: 7,263
  精华: 18
 

awk是什么命令来的????







__________________
And then in the evening light, when the bars of freedom fall
I watch the two of you in the shadows on the wall
How in the darkness steals some of the choices from my hand
Then will I begin to under
  Snoopy 当前离线   回复时引用此帖
旧 03-02-15, 23:13 第 40 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

awk是用来操作数据和产生报表的一种编程语言.
awk代表该语言的三位作者的姓的头一个字母,Alfred Aho,Peter Weinberger,Brian Kernighan.
  KornLee 当前离线   回复时引用此帖
旧 03-02-16, 20:05 第 41 帖
ykwj121
 
ykwj121 的头像
 
 
注册会员  
  注册日期: Jul 2002
  帖子: 72
  精华: 1
 

结果确实是乱的啊,但它要求的确实是这样的输出。
  ykwj121 当前离线   回复时引用此帖
旧 03-02-16, 22:33 第 42 帖
Snoopy
 
Snoopy 的头像
 
 
★☆★版主☆★☆  
  注册日期: Jan 2003
  我的住址: Linux Pet
  帖子: 7,263
  精华: 18
 

那它编出来的是什么东西的???
  Snoopy 当前离线   回复时引用此帖
旧 03-02-17, 09:46 第 43 帖
ykwj121
 
ykwj121 的头像
 
 
注册会员  
  注册日期: Jul 2002
  帖子: 72
  精华: 1
 

引用:
最初由 pinksnoopy 发布
那它编出来的是什么东西的???
你可以参考:
http://www.linuxsir.com/bbs/showthre...threadid=21065
第九章来了解awk。
  ykwj121 当前离线   回复时引用此帖
旧 03-02-17, 10:20 第 44 帖
artou
 
 
 
注册会员  
  注册日期: Jan 2003
  帖子: 30
  精华: 0
 

1 awk 'BEGIN {FS=":"} {print $2}' awkdata
2 awk 'BEGIN {FS=":"} {if($1~/Dan/) print $2}' awkdata
3 awk 'BEGIN {FS=":"} {if($1~/Susan/) print $1,$2}' awkdata
4 awk '{if($1~/^D/) print $1}' awkdata
5 awk '{if($1~/^[C,E]/) print $1}' awkdata
6 awk 'length($1)=="4" {print $1}' awkdata
7 awk 'BEGIN{FS=":"} {OFS=""} {print $2," ",$1}' awkdata | awk '{if($1~/\[916/) print $3}'
8 awk 'BEGIN{FS=":"} {OFS="$"} {if($1~/Mike/) print "",$3,$4,$5}' awkdata
9 awk 'BEGIN{FS=":"} {OFS=""} {print $2," ",$1}' awkdata | awk '{print $4","$3}'
10
#!/bin/awk -f
BEGIN {FS=":"}
{if($1~/Savage/) print $1,$2}
{if($1~/Chet/) print $3,$4,$5}
{if($3~/250/) print $1}

第9题是显示姓,后面的例子怎么是显示名在前呢?题目本身有问题
第10题很奇观,排列的顺序太乱了。。。
  artou 当前离线   回复时引用此帖
旧 03-02-17, 14:26 第 45 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

是很奇观!纳闷ing~~~
  KornLee 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 11:56


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2012, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2011, LinuxSir.Org