Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140020
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 237
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-23 10:59
文章分类

全部博文(39)

文章存档

2016年(2)

2015年(25)

2014年(10)

2013年(2)

我的朋友

分类: LINUX

2015-07-18 17:21:01

首先,我们需要操作的文件名字为:lab3.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


1.题目:
1.打印所有的电话号码
2.打印Dan的电话号码
3.打印Susan的姓名和电话号码
4.打印所有姓以D开头的姓氏
5.打印所有以C或E开头的名字
6.打印所有只包含4个字符的名字
7.打印所有区号为916的人的名字
8.打印Mike的资助金额,每一个值要使用美元符号开头,例如“$250 $100 $175”
9.打印所有的姓,后面跟着一个逗号和名
10.编写一个名为facts的脚本,并完成下面的工作
  a.打印所有姓氏为Savage的人的全名和电话号码
  b.打印Chet的资助金额
  c.打印在第一个月资助来250美元的人

3.答案(自己写的,大家可以再探讨,在bash shell下实验ok)

1. awk -F: '{print $2}' lab3.data
2. awk -F: '/^Dan /{print $2}' lab3.data
3. awk -F: '/^Susan /{print $1 , $2}' lab3.data
4. 注意:第二个字段是姓
 awk -F'[ :]' '$2 ~ /^D/{print $2}' lab3.data 
5.名字是第一个字段
awk '$1 ~ /^[CE]/{print $1}' lab3.data 
6.感觉有点复杂,不知道大家有没有简单的方法
awk -F: '$1 ~ /^.... /{print $1}' lab3.data | awk '{print $1}'

7.awk -F'[ :]' '$3 ~ /\(916\)/{print $1}' lab3.data 
8.print应该也是可以的,只是没有想到更好的
方法一:awk -F: '$1 ~ /^Mike /{printf "$%d $%d $%d\n",$3,$4,$5}' lab3.data 
方法二:awk -F: '$1 ~ /^Mike /{print "$"$3,"$"$4,"$"$5}' lab3.data 
9.
awk -F'[ :]' '{print $2","$1}' lab3.data
10.脚本文件名字为:awktest
   脚本内容如下:
/ Savage/{print $1,$2}
/Chet[ :]/{print "$"$3,"$"$4,"$"$5}
$3==250
   脚本的执行:awk -F: -f awktest lab3.data

4. 问题:
 自己在倒腾shell的时候发现这样一个问题,望各位大侠赐教:

  有文件testdata,内容如下:
'/ Savage/{print $1,$2}'
'/Chet[ :]/{print "$"$3,"$"$4,"$"$5}' 
'$3==250'

 然后呢,我想用sed命令来去掉所有的单引号,即" ' ":
sed  's/\'//g' testdata
 可是就是没有输出,而且vim testdata也觉得有异常,各位大侠赐教~


阅读(850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~