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