LinuxSir.cn,穿越时空的Linuxsir!

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

请教一个提取文件的问题

[复制链接]
发表于 2007-1-16 23:31:26 | 显示全部楼层 |阅读模式
本人小菜..
例如:要求把A.txt文件中,第5-7位是010的行输入到文件B中
(要考虑执行速度问题,文件打开,关闭的次数尽量要少,
因为如果文件很大,例如十几万条数据..速度会很慢)
A.TXT
00000101000
00000207000
00000108000
00000309000
00000100000
00000101003
00000401000

求教..
发表于 2007-1-17 00:01:43 | 显示全部楼层
awk 'BEGIN{FS=""} $5$6$7 == "010" {print >"B"}' A.txt
回复 支持 反对

使用道具 举报

发表于 2007-1-17 09:35:24 | 显示全部楼层
sed -n -e '/^....010.*/p' A.txt > B
回复 支持 反对

使用道具 举报

发表于 2007-1-17 18:43:38 | 显示全部楼层
要考虑性能就应该用c语言,而且处理过程中不做任何显示,速度相当快,以前偶试过
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-17 22:22:45 | 显示全部楼层
Post by lastart
awk 'BEGIN{FS=""} $5$6$7 == "010" {print >"B"}' A.txt


{FS=""} 错的..分割符不能为""啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-17 22:23:29 | 显示全部楼层
Post by Iambitious
sed -n -e '/^....010.*/p' A.txt > B


不能定位啊,010可能在别的位置也会出现的
回复 支持 反对

使用道具 举报

发表于 2007-1-18 00:47:59 | 显示全部楼层
^....保证了010只能出现在第5-7位
回复 支持 反对

使用道具 举报

发表于 2007-1-18 20:25:10 | 显示全部楼层
Post by freeh
{FS=""} 错的..分割符不能为""啊

虽然我的这种写法效率比较底, 但FS=""至少在mawk里是没错的.

  1. $ echo abcd|mawk 'BEGIN{FS=""}{print NF}'
  2. 4
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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