Chinaunix

标题: 拆分文件问题~~ 急!! [打印本页]

作者: 霏飞    时间: 2006-09-01 09:34
标题: 拆分文件问题~~ 急!!
我有一个文件  想用一些条件给拆分成N多个~~
想匹配第一个字段 然后符合的拆分成一个文件

写法:
while read -r jg
do
cat $filename |awk -F "|" '{if ($1=='$jg') print $0}' > $filename.$jg
done < jgdm.txt

可是这样子效率好慢
如果jgdm.txt 有多条记录 就要读多次filename文件
有没有好办法能一次就拆分出来的??
作者: 霏飞    时间: 2006-09-01 09:40
我哭~~~
怎么没人理我呀~
作者: 霏飞    时间: 2006-09-01 09:45
亲爱的斑斑  到底在不在呀~~  帮偶看看吧 555555 !!  可怜呀 都没人理!!
作者: waker    时间: 2006-09-01 09:52
如果分成的文件不是很多
awk 'NR==FNR{a[$0]=$0}
NR>FNR{print >"jgdm."a[$1]}' jg jgdm.txt

看新手导航吧
作者: 霏飞    时间: 2006-09-01 10:20
原帖由 waker 于 2006-9-1 09:52 发表
如果分成的文件不是很多
awk 'NR==FNR{a[$0]=$0}
NR>FNR{print >"jgdm."a[$1]}' jg jgdm.txt

看新手导航吧


新手导航好多哦    看的眼花~  
作者: 寂寞烈火    时间: 2006-09-01 10:45
split/csplit
作者: 霏飞    时间: 2006-09-01 14:42
烈火能详细点吗? 偶是菜菜~  嘿嘿
就是我的文件大概有几十万的记录,字段之间用'|'分割的
想根据第一个字段进行拆分
能具体写下怎么用上面那个命令不?
我的是ksh环境  HP-UNIX的机器
作者: 寂寞烈火    时间: 2006-09-01 15:11
原帖由 霏飞 于 2006-9-1 14:42 发表
烈火能详细点吗? 偶是菜菜~  嘿嘿
就是我的文件大概有几十万的记录,字段之间用'|'分割的
想根据第一个字段进行拆分
能具体写下怎么用上面那个命令不?
我的是ksh环境  HP-UNIX的机器

我没你的环境,或许帮不了你~,要不你贴出样本,和想要的效果,让大家给你出出主意吧!
作者: vic2005    时间: 2006-09-01 15:15
标题: 一个解决方法
==测试文件:txt==
: cat txt
file1   123
file2   abc
file2   dfg
file1   987
file2   xyz
file1   456

==拆分条件文件:filecond==
: cat filecond
file1
file2

拆分原则:按第一个字段,将数据归类。例如:file1, 归于file1.txt;file2,归于file2.txt

=========脚本================
: cat filecond
file1
file2
gzhang@xianlinux9.asia.corp.platform.com-40: cat sortFile.awk
BEGIN {
  "cat filecond|wc -l" | getline cndNum;
  for (i = 0; i < cndNum; i++)
    {
      getline < "filecond";
      a=$0;
    }
}
{
  for (i=0; i<cndNum; i++)
     if ($1== a)
     cmdLine=sprintf("echo %s >> %s.txt",$0,a);
     #system(cmdLine);
     print cmdLine;
  }

=====测试结果=====

: awk -f sortFile.awk txt

: more file?.txt
::::::::::::::
file1.txt
::::::::::::::

file1 123
file1 987
file1 456
::::::::::::::
file2.txt
::::::::::::::

file2 abc
file2 dfg
file2 xyz

[ 本帖最后由 vic2005 于 2006-9-1 15:30 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2