转载自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/469.删除所有空白行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 : 300awk命令练习上面的数据库中包含名字,电话号码和过去三个月里的捐款1.显示所有电话号码2.显示Dan的电话号码3.显示Susan的名字和电话号码4.显示所有以D开头的姓5.显示所有以一个C或E开头的名6.显示所有只有四个字符的名7.显示所有区号为916的人名8.显示Mike的捐款.显示每个值时都有以$开头.如$250$100$1759.显示姓,其后跟一个逗号和名,如Jody,Savage10.写一个awk的脚本,它的作用:11.显示Savage的全名和电话号码12.显示Chet的捐款13.显示所有头一个月捐款$250的人名.注:区号本来是圆括号表示的.
grep:1.grep "San" datafile2.grep '^J' datafile3.grep '700$' datafile4.grep -v "834" datafile5.grep '/:12//' datafile6.grep '/:498/-' datafile #是不是作者写错了,好象没有这样的行7.grep '[A-z][a-z]/{4/}/:[[:space:]][A-Z]' datafile #好象也没有这样的行,或者我的不对^_^8. grep '[a-z]/{1,/}[[:space:]][Kk]' datafile9.grep -n '[0-9]/{6,/}$' datafile10.grep -i "lincoln" datafile
grep [lL]incoln datefile
sed1.sed 's/Jon/Jonathan/g' datafile2.sed '1,3d' datafile3.sed -n '5,10p' datafile4.sed '/Lane/d' datafile5.sed -n '/:1[12]//p' datafile #有这样写的:sed -n '/[:::]1[1-2][:/:]/p' datafile. 不知对不对,谁能给讲下,谢谢 6.sed -e 's/^Fred/***Fred/' datafile7. sed -e 's/.*Jose.*/JOSE HAS RETIRE/g' datafile8.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'} datafile2.awk -F: '/^Dan/{print $2}' datafile3.awk -F: '/^Susan/{print $1 ,$2}' datafile4.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}' datafile8.awk -F: '/^Mike/{print "$"$3"$"$4"$"$5}' datafile9.awk -F: '{print $1}' datafile|awk '{print $2,",",$1}'#!/bin/awk -fBEGIN{FS=":"}{if($1 ~/ Savage/) print $1":"$2}{if($1 ~/^Chet /) print "$"$3":$"$4":$"$5}{if($3 == 250) print $1}#这个是抄别人的,以上的也有参照别人的.