LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 811|回复: 11

[请教] sed的问题。[基本解决]

[复制链接]
发表于 2004-4-16 11:55:06 | 显示全部楼层 |阅读模式
文件格式:
tom:m:11/24/80
marry:f:11/16/80
mike:m:11/11/97
要把mike的生日改成11/11/79,(位置不定),同时列出所有的行。
只用sed

谢谢。
发表于 2004-4-16 12:35:43 | 显示全部楼层

  1. sed '/^mike/s/\([0-9][0-9]\/[0-9][0-9]\/\)[0-9]\{2\}/\197/'
复制代码
 楼主| 发表于 2004-4-16 13:52:54 | 显示全部楼层
谢谢。再请教,我要在里面查找一个范围,比如说
生日在1-15,和20-21(不是01),该怎么实现啊?
 楼主| 发表于 2004-4-16 14:05:57 | 显示全部楼层
继续请教:
Abc Efg:m:11/11/11
用sed有没办法输出成这样:
Efg Abc:m:11/11/11
发表于 2004-4-16 14:06:00 | 显示全部楼层
最初由 天刀 发表
谢谢。再请教,我要在里面查找一个范围,比如说
生日在1-15,和20-21(不是01),该怎么实现啊?

那用awk比较简单,

  1. /home/javalee/test/a#cat file
  2. tom:m:11/24/80
  3. marry:f:11/16/80
  4. mike:m:11/11/97
  5. abc:d:12/1/99
  6. ddd:f:02/14/44
  7. fff:c:12/01/55
  8. rrrr:g:10/20/99
  9. gg:e:12/21/88

  10. cat file|awk -F/ '$2>=1&&$2<16&&$2!~/01/||$2>=20&&$2<=21'
  11. mike:m:11/11/97
  12. abc:d:12/1/99
  13. ddd:f:02/14/44
  14. rrrr:g:10/20/99
  15. gg:e:12/21/88

复制代码
 楼主| 发表于 2004-4-16 14:10:54 | 显示全部楼层
谢!
要是用sed的话该怎么实现呢?
比如说不是1-20,而是1-300。
发表于 2004-4-16 14:13:42 | 显示全部楼层
最初由 天刀 发表
谢!
要是用sed的话该怎么实现呢?
比如说不是1-20,而是1-300。

贴出个样本吧~~~
 楼主| 发表于 2004-4-16 14:43:48 | 显示全部楼层
哦。比如说以下的数据:
Apple:100
Orange:30
Banana:20
Tomato:1
Vegetable:500
要查询数量为1-300之间的东西。
发表于 2004-4-16 14:55:24 | 显示全部楼层
  1. awk -F: '$2<=300'
复制代码

ps:不明白,为什么非得用sed,放着awk不用? :ask
发表于 2004-4-16 15:40:16 | 显示全部楼层
sed:

  1. /home/javalee#cat file
  2. Apple:100
  3. Orange:30
  4. Banana:20
  5. Tomato:1
  6. Vegetable:500
  7. ddd:333
  8. q:300
  9. aaa:299
  10. fff:33333
  11. bbb:298
  12. ccc:199
  13. /home/javalee#cat file|sed -n '/\<[0-9]\{1,2\}\>/p;/\<[12][0-9]\{2\}\>/p'
  14. Apple:100
  15. Orange:30
  16. Banana:20
  17. Tomato:1
  18. aaa:299
  19. bbb:298
  20. ccc:199
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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