设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

楼主: tomlinux

[sed] sed和awk练习 [复制链接]

Rank: 8Rank: 8

注册时间
2009-2-12
最后登录
2012-5-15
在线时间
43 小时
阅读权限
90
积分
7917
帖子
38
主题
1
精华
0
UID
1394
发表于 2012-1-19 18:00:38 |显示全部楼层
  1. sed -r '1s/^/PERSONNEL FILE\n/;$s/$/\nTHE END/;s/(^[#]?)([a-zA-Z]+) ([a-zA-Z]+)(:.*)/\1\3 \2\4/;s/:([0-9]+)500$/:/'  filename
复制代码
再用sed写一个最后一题

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-10-15
最后登录
2012-5-22
在线时间
331 小时
阅读权限
90
积分
34209
帖子
392
主题
13
精华
0
UID
10623
发表于 2012-1-20 10:21:40 |显示全部楼层
1、把Jon改成Jonathan
awk '{gsub(/Jon/,"Jonathan");print}' file

2、删除前三行
awk 'NR>=4' file

3、显示5-10行
awk 'NR>=5&&NR<=10' file

4、删除包含Lane的行
awk '$0 !~ /Lane/' file

5、显示生日在11月12日之间的行
awk -F ":|/" '{if($4==11||$4==12)print}' file

6、把3个星号添加到以Fred开头的行
awk '{gsub(/^Fred/,"***Fred");print}' file

7、用JOSE HAS RETIRED取代包含Jose的行
awk '/Jose/{print "JOSE HAS RETIRED"};!/Jose/' file

8、把Popeye的生日改成11/14/46
awk -F : '/Popeye/{$(NF-1) = "11/14/46"}1' file

9、删除所有空行
awk '$NF >= 1' file

10、在20到30前加#号(是20行到30行吗???)
awk 'NR>=20&&NR<=30{gsub(/^/,"#")}1' file

11、去掉1-5行的#号
awk 'NR>=1&&NR<=5{gsub(/#/,"")}1' file

12、写一个脚本,将:
.在第一行之前插入标题PERSONNEL FILE.
.删除以500结尾的工资
.显示文件内容,把姓和名颠倒
.在文件末尾添加THE END
awk -F ":| " 'BEGIN{print "ERSONNEL FILE."}{tmp = $1;$1 = $2;$2 = tmp}$NF !~ /500$/;END {print "THE END"}' file


唉~~~~普通公司的放假了,文艺公司的回家了,,,,我这样的就只能无聊论坛做题了。。。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢红之盟网络提供带宽支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2012-5-22 21:22 , Processed in 0.111969 second(s), 8 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部