grep,sed,awk命令实例大练习

 转载自linuxsir的shell版
http://www.linuxsir.org/bbs/showthread.php?t=23617
文件:datafile

Steve Blenheim: 238 - 923 - 7366 : 95  Latham Lane, Easton, PA  83755 : 11 / 12 / 56 : 20300
Betty Boop:
245 - 836 - 8357 : 635  Cutesy Lane, Hollywood, CA  91464 : 6 / 23 / 23 : 14500
Igor Chevsky:
385 - 375 - 8395 : 3567  Populus Place, Caldwell, NJ  23875 : 6 / 18 / 68 :23400Norma Corder: 397 - 857 - 2735 : 74  Pine Street, Dearborn, MI  23874 : 3 / 28 / 45 : 245700
Jennifer Cowan:
548 - 834 - 2348 : 583  Laurel Ave., Kingsville, TX  83745 : 10 / 1 / 35 : 58900
Jon DeLoach:
408 - 253 - 3122 : 123  Park St., San Jose, CA  04086 : 7 / 25 / 53 : 85100
Karen Evich:
284 - 758 - 2857 : 23  Edgecliff Place, Lincoln, NB  92086 : 7 / 25 / 53 : 85100
Karen Evich:
284 - 758 - 2867 : 23  Edgecliff Place, Lincoln, NB  92743 : 11 / 3 / 35 : 58200
Karen Evich:
284 - 758 - 2867 : 23  Edgecliff Place, Lincoln, NB  92743 : 11 / 3 / 35 : 58200
Fred Fardbarkle:
674 - 843 - 1385 : 20  Parak Lane, DeLuth, MN  23850 : 4 / 12 / 23 : 780900
Fred Fardbarkle:
674 - 843 - 1385 : 20  Parak Lane, DeLuth, MN  23850 : 4 / 12 / 23 : 780900
Lori Gortz:
327 - 832 - 5728 : 3465  Mirlo Street, Peabody, MA  34756 : 10 / 2 / 65 : 35200
Paco Gutierrez:
835 - 365 - 1284 : 454  Easy Street, Decatur, IL  75732 : 2 / 28 / 53 : 123500
Ephram Hardy:
293 - 259 - 5395 : 235  CarltonLane, Joliet, IL  73858 : 8 / 12 / 20 : 56700
James Ikeda:
834 - 938 - 8376 : 23445  Aster Ave., Allentown, NJ  83745 : 12 / 1 / 38 : 45000
Barbara Kertz:
385 - 573 - 8326 : 832  Ponce Drive, Gary, IN  83756 : 12 / 1 / 46 : 268500
Lesley Kirstin:
408 - 456 - 1234 : 4  Harvard Square, Boston, MA  02133 : 4 / 22 / 62 : 52600
William Kopf:
846 - 836 - 2837 : 6937  Ware Road, Milton, PA  93756 : 9 / 21 / 46 : 43500
Sir Lancelot:
837 - 835 - 8257 : 474  Camelot Boulevard, Bath, WY  28356 : 5 / 13 / 69 : 24500
Jesse Neal:
408 - 233 - 8971 : 45  Rose Terrace, San Francisco, CA  92303 : 2 / 3 / 36 : 25000
Zippy Pinhead:
834 - 823 - 8319 : 2356  Bizarro Ave., Farmount, IL  84357 : 1 / 1 / 67 : 89500
Arthur Putie:
923 - 835 - 8745 : 23  Wimp Lane, Kensington, DL  38758 : 8 / 31 / 69 : 126000
Popeye Sailor:
156 - 454 - 3322 : 945  Bluto Street, Anywhere, USA  29358 : 3 / 19 / 35 :22350Jose Santiago: 385 - 898 - 8357 : 38  Fife Way, Abilene, TX  39673 : 1 / 5 / 58 : 95600
Tommy Savage:
408 - 724 - 0140 : 1222  Oxbow Court, Sunnyvale, CA  94087 : 5 / 19 / 66 : 34200
Yukio Takeshida:
387 - 827 - 1095 : 13  Uno Lane, Ashville, NC  23556 : 7 / 1 / 29 : 57000
Vinh Tranh:
438 - 910 - 7449 : 8235  Maple Street, Wilmington, VM  29085 : 9 / 23 / 63 : 68900

 

grep命令练习
1.显示所有包含San的行
2.显示所有以J开始的人名所在的行
3.显示所有以700结尾的行
4.显示所有不包括834的行
5.显示所有生日在December的行
6.显示所有电话号码的区号为498的行
7.显示所有这样的行:它包含一个大写字母,后跟四个小写字母,一个冒号,一个空格,和一
个大写字母
8.显示姓以K或k开头的行
9.显示工资为六位数的行,并在前面加行号
10.显示包括Lincoln或lincoln的行,并且grep对大小写不敏感.
sed命令练习
1.把Jon's的名字改成Jonathan.
2.删除头三行
3.显示5-10行
4.删除包含Lane的行.
5.显示所有生日在November-December之间的行
6.把三个星号(***)添加到也Fred开头的行
7.用JOSE HAS RETIRED取代包含Jose的行
8.把Popeye的生日改成11/14/46
9.删除所有空白行
10.写一个脚本,将:
.在第一行之前插入标题PERSONNEL FILE.
.删除以500结尾的工资
.显示文件内容,把姓和名颠倒
.在文件末尾添加THE END

文件: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


awk命令练习
上面的数据库中包含名字,电话号码和过去三个月里的捐款
1.显示所有电话号码
2.显示Dan的电话号码
3.显示Susan的名字和电话号码
4.显示所有以D开头的姓
5.显示所有以一个C或E开头的名
6.显示所有只有四个字符的名
7.显示所有区号为916的人名
8.显示Mike的捐款.显示每个值时都有以$开头.如$250$100$175
9.显示姓,其后跟一个逗号和名,如Jody,Savage
10.写一个awk的脚本,它的作用:
11.显示Savage的全名和电话号码
12.显示Chet的捐款
13.显示所有头一个月捐款$250的人名.
注:区号本来是圆括号表示的.

 

 

grep:
1.grep "San" datafile
2.grep '^J' datafile
3.grep '700$' datafile
4.grep -v "834" datafile
5.grep '/:12//' datafile
6.grep '/:498/-' datafile #是不是作者写错了,好象没有这样的行
7.grep '[A-z][a-z]/{4/}/:[[:space:]][A-Z]' datafile #好象也没有这样的行,或者我的不对^_^
8. grep '[a-z]/{1,/}[[:space:]][Kk]' datafile
9.grep -n '[0-9]/{6,/}$' datafile
10.grep -i "lincoln" datafile

grep [lL]incoln datefile

sed
1.sed 's/Jon/Jonathan/g' datafile
2.sed '1,3d' datafile
3.sed -n '5,10p' datafile
4.sed  '/Lane/d' datafile
5.sed -n '/:1[12]//p' datafile #有这样写的:sed -n '/[:::]1[1-2][:/:]/p' datafile. 不知对不对,谁能给讲下,谢谢
6.sed -e 's/^Fred/***Fred/' datafile
7. sed -e 's/.*Jose.*/JOSE HAS RETIRE/g' datafile
8.sed -n '/^Popeye/p' datafile  |sed 's/[0-9]/{1,/}//[0-9]/{1,/}//[0-9]/{1,/}/11//14//46/'
9.sed '/^$/d' datafile

awk:
1.awk -F : '{print $2'} datafile
2.awk -F: '/^Dan/{print $2}' datafile
3.awk -F: '/^Susan/{print $1 ,$2}' datafile
4.awk -F: '{print $1}' datafile |awk '{print $2}' |awk '/^D/'
5.awk -F: '{print $1}' datafile |awk '{print $1}' |awk '/^[CE]/'
6.awk -F: '{print $1}' datafile |awk '{if(length($1) == 4)print $1}'
7.awk -F: '//[916/]/{print $1}' datafile
8.awk -F: '/^Mike/{print "$"$3"$"$4"$"$5}' datafile
9.awk -F: '{print $1}' datafile|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}#这个是抄别人的,以上的也有参照别人的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值