LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: KornLee

grep,sed,awk命令实例大练习[整理]

[复制链接]
发表于 2003-2-12 22:54:48 | 显示全部楼层
呵呵,第8个应该是:
sed -e '/Popeye/s/[1-9]*\/.*\/.*:/:11\/14\/46:/' datafile

我不是说他写法错了,我是说这样做的意义就不大了。
这个题目的意思是把一个文件里面Popeye的生日改了。(事实是这个错误的生日也许没人关心是多少)
而如果匹配了名字后,还要去先看他原来的生日是多少,再匹配来修改就不爽了。
所以应该是找到名字后,自动修改生日那一栏,不管原来生日是什么数字。

而且输出后应该还是一个完整的文件,而不是Popeye的那一行。
 楼主| 发表于 2003-2-12 23:13:43 | 显示全部楼层
嗯~有道理! 谢谢
那个grep命令有些多余
javalee//home/javalee/x>sed -n 's/3\/19\/35/11\/14\/46/p' datafile
Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:11/14/46:22350
发表于 2003-2-12 23:34:13 | 显示全部楼层
最后一个还没有最后定稿,我分开用了很多临时文件来完成,看起来就很丑 ,而且sed也只用了一次
但我必须去睡觉了,呵呵,请高手指点吧。

#! /bin/sh
cut -d: -f1 datafile >cut1
cut -d: -f2,3,4,5 datafile >cut2
awk '{print $2" "$1}' cut1 >cut3
paste -d: cut3 cut2 >cut4
sed -e 's/[1-9]*500//' cut4>cut0
awk 'BEGIN {print "\t\tPERSONNEL FILE\n"} {print $0} END {"THE END"}' cut0
发表于 2003-2-13 09:16:29 | 显示全部楼层
改了一下,现在脚本变成:

#! /bin/sh
paste -d: `cut -d: -f1 datafile |awk '{print $2" "$1}'>tmp0` `cut -d: -f2,3,4,5
datafile >tmp1` |sed -e 's/[1-9]*500$//'|awk 'BEGIN{print "\t\t\tPERSONNEL FILE"
} {print $0} END{print "\t\t\tTHE END"}'
发表于 2003-2-13 10:02:10 | 显示全部楼层
谢谢两位,受益非浅。。。
发表于 2003-2-13 11:53:07 | 显示全部楼层
针对下面的文件内容:
09:58:36.03 2 IMAP-27587 '1001' connected from
09:58:37.58 2 IMAP-27587 '1001' disconnected
09:58:42.84 2 POP-55513 'lujian' connected from

我要显示包含“POP”和"connected from"的行,怎么用grep命令?
发表于 2003-2-13 11:55:05 | 显示全部楼层
grep两次,用pipe
 楼主| 发表于 2003-2-13 14:08:26 | 显示全部楼层
ykwj121兄,能不能用sed命令实现"显示文件内容,把姓和名颠倒"这个问题呢? 你用了多个cut命令,固然可以完成,但是题目的用意是用sed来实现,恕小弟愚昧;)
发表于 2003-2-13 14:20:11 | 显示全部楼层
呵呵,偶暂时没招了
你有什么可以赐教的吗?
 楼主| 发表于 2003-2-13 14:29:09 | 显示全部楼层
我也没作出来呢 sed的命令集很多,我觉得是不是用r/w/x/h命令是不是可以呢?
不过兄弟你的思路不错,谢谢~ 让我们努力吧;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表