Unix Shell范例精解---grep和sed练习题
题目来自Unix Shell范例精解这本书中的第四章和第五章,用的都是datebook这个文件,文件内容如下:
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:23400
Norma 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 92743: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, Duluth, MN 23850:4/12/23:780900
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, 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:22350
Jose 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家族练习题
grep练习:自己做的答案,不是标准答案,应该有更简洁的方法1.打印所有包含字符串San的行
grep 'San' datebook2.打印所有名字以J开头的行
grep '^J' datebook3.打印所有以700结尾的行
grep '700$' datebook 4.打印所有不包含834的行
grep -v '834' datebook 5.打印所有生日在十二月的行
grep ':12/[0-9]*/[0-9]*:' datebook6.打印所有电话号码区号为408的行
grep '[a-z]:408-' datebook7.打印所有包含一个大写字母,后跟4个小写字母,一个逗号,一个空格和一个大写字母的行
grep '[A-Z][a-z][a-z][a-z][a-z], [A-Z]' datebook8.打印所有最后一个名字以K或k开始的行
grep '^[A-Z][a-z]* [Kk]' datebook9.打印所有薪水为6位数字的行,前导是一个行号
grep -n '[0-9]\{6,\}$' datebook10.打印包含Lincoln或lincoln(不区分大小写的行)
egrep 'lincoln|Lincoln' datebook
grep '[lL]incoln' datebook
第五章:流编辑器sed练习题
sed练习:自己做的答案,不是标准答案,应该有更简洁的方法
1.把Jon的名字改为Jonathan
sed -n 's/^Jon/Jonathan/p' datebook2.删除头3行
sed '1,3d' datebook 3.打印第5~10行
sed -n '5,10p' datebook
4.删除含有Lane的所有行
sed '/Lane/p' datebook5.打印所有生日在十一月或十二月的行
sed -n '/[A-Z]\{2,3\} [0-9]*:1[12]/p' datebook
6.在以Fred开头的各行末尾加上3颗星
sed '/^Fred/s/$/***/' datebook
sed 's/^Fred.*[0-9]/&***/' datebook7.将所有包含Jose的行都替换为JOSE HAS RETIRED
sed 's/Jose/JOSE HAS RETIRED/g' datebook 8.把Popeye的生日改为11/14/46,假定您不知道Popeye的生日,设法用正则式查找出来
sed -n '/\<Popeye\>/s/[0-9]*\/[0-9]*\/[0-9]*/11\/14\/46/p' datebook
sed -n '\#^Popeye#s#[0-9]*/[0-9]*/[0-9]*#11/14/46#p' datebook 9.删除所有空行
sed '/^$/d' datebook10.写一个能完成下列任务的sed脚本
a) 在第一行上方插入标题PERSONNEL FILE
b) 删除以500结尾的工资项
c) 把名和姓的位置颠倒后,打印文件内容
d) 在文件末尾加上THE ENDa)解答 1i\PERSONNEL FILE
b)解答 /500$/d #这个有问题,没有删除500结尾的行
c)解答 s/\(^[^ ]\+\) \([^ :]\+\)/\2 \1/
d)解答 $a\THE END
sed脚本输出结果
sed脚本内容:#!/usr/bin/sed
1i\PERSONNEL FILE
/500$/d #这个有问题,没有删除500结尾的行
s/\(^[^ ]\+\) \([^ :]\+\)/\2 \1/
$a\THE END执行sed脚本:sed -f sed datebook:PERSONNEL FILE
Blenheim Steve:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300
Boop Betty:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500
Chevsky Igor:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400
Corder Norma:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700
Cowan Jennifer:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900
DeLoach Jon:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100
Evich Karen:284-758-2857:23 Edgecliff Place, Lincoln, NB 92743:7/25/53:85100
Evich Karen:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
Evich Karen:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
Fardbarkle Fred:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900
Fardbarkle Fred:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900
Gortz Lori:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200
Gutierrez Paco:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500
Hardy Ephram:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700
Ikeda James:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000
Kertz Barbara:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500
Kirstin Lesley:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600
Kopf William:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500
Lancelot Sir:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500
Neal Jesse:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000
Pinhead Zippy:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500
Putie Arthur:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000
Sailor Popeye:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350
Santiago Jose:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600
Savage Tommy:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200
Takeshida Yukio:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000
Tranh Vinh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900
THE END
总结: 不知道为什么/500$/d不能删除以500结尾的行,在vim中查看datebook的行尾符号确实是$符号。工作中grep命令用的比较频繁,sed更多在脚本中用,sed脚本还没有写过。
Unix Shell范例精解---grep和sed练习题相关推荐
- Unix shell范例精解 课后题
1.read #屏幕输入 read name #输入名字 2.echo #在终端打印出内容 echo "What is your name ?" # What is you ...
- Shell 脚本详解
简介 shell :蛋.壳.shell脚本是在操作系统外,可以直接调用系统内核命令的一个脚本语言. shell脚本可以分为两大类组成: 1.命令行 (系统命令行)2.脚本语法 (编程语言的基本语法) ...
- shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)
一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...
- Linux Shell重定向 管道命令 grep搜索 awk编程 sed文件操作高阶函数
在编程中如果能够熟悉shell高阶语法,将对我们进阶为高级程序员有很大的帮助,本文将从Shell重定向 管道命令 awk编程 sed等方面展开介绍. 作者:有勇气的牛排 文章目录 1 shell重定向 ...
- 学习云计算运维之shell三剑客(grep、sed、awk)一篇就够了!!!
正则表达式 一:什么是正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串", 这个"规则字符串 ...
- shell脚本详解(十)——sed编辑器的使用方法
shell脚本详解(十)--sed编辑器的使用方法 一.sed编辑器 二.sed编辑器工作流程 1.读取: 2.执行: 3.显示: 4.注: 三.命令格式 四.常用选项 五.常用操作 六.使用地址 s ...
- cut\grep\awk\sed命令详解
cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut 选项 文件名 (2)选项作用: -d 分隔符 按照指定的 ...
- linux三剑客试题,Linux三剑客(grep、sed、awk)详解
Linux三剑客(grep.sed.awk)详解 前言:本文主要介绍一下Linux中最重要的三个命令,他们在业界被誉为"三剑客",它们分别是:awk,sed,grep.它们三个侧能 ...
- 【Shell牛客刷题系列】SHELL1 统计文件的行数:学习wc命令和文本三剑客awk、grep、sed命令
该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令. 刷题链接:牛客题霸-Shell篇. 该系列文章都放到专栏下,专栏链接为:<专栏:Linux>.欢迎关注专栏~ 本 ...
最新文章
- 如何获取公众号中html,[技巧] 如何获取公众号图文里的视频地址
- 京东典型广告推广源码示例一
- ext 部署到 tomcat服务器下,通过http8080端口查看
- SAP WebIDE 里的 neo-app.json 文件用途
- PHP判断客户端的浏览器类型
- 微信小程序image组件中aspectFill和widthfix模式应用详解
- .NET简谈插件系统开发模式
- Windows下80端口被进程SystemPID=4占用的解决方法
- hibernate 查询id为空懒加载_hibernate 查询时指定查询字段、级联表的一种方式
- mysql 5.7 创建用户_MySQL 5.7 创建用户并授权
- 洛谷 1429 平面最近点对(加强版) 快排 非点分治或kdtree
- HTML元素分类【三种类型】
- lstm数学推导_ICML 2019 | 神经网络的可解释性,从经验主义到数学建模
- 【图像增强】基于脉冲神经网络PCNN实现图像增强附matlab代码
- Gamit 数据处理,相关的文件配置
- 淘宝双十一自动做任务方案
- 股票大作手回忆录读书笔记
- zigbee应用实践
- 带有鸿蒙logo的壁纸,鸿蒙OS Logo曝光
- 官宣一一塔米狗企业并购图谱功能上线啦