免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1464 | 回复: 8
打印 上一主题 下一主题

awk对文本处理?难! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-12 11:21 |只看该作者 |倒序浏览
有一个文件
4001 100 200 300
         200 300 400
          。。。。。。
4002 200 300 500
         200 300 400
         。。。。。。。
4003 。。。。。。。
。。。。。。。。。。
现想按第一域分成一个文件,结果如
#cat 4001
100 200 300
200 300 400
。。。。。。
#
即不要第一域。应该如何做,我是不思不得其解!

论坛徽章:
0
2 [报告]
发表于 2003-02-12 11:33 |只看该作者

awk对文本处理?难!

while read line
do
    if [ "`echo $line | awk '{ print $4 }'`" != "" ]
    then
           FILE_NAME=`echo $line | awk '{ print $1 }'`
           echo -n $line | awk '{ print $2 }' > FILE_NAME
           echo -n $line | awk '{ print $3 }' >> FILE_NAME
           echo $line | awk '{ print $4 }' >> FILE_NAME
   else
           echo -n $line | awk '{ print $1 }' >> FILE_NAME
           echo -n $line | awk '{ print $2 }' >> FILE_NAME
           echo $line | awk '{ print $3 }' >> FILE_NAME
  fi
done < 你的原始文件名

我也是初学者!因为很忙,所以也没有调试过,你自己看看,应该可以!

论坛徽章:
0
3 [报告]
发表于 2003-02-12 11:49 |只看该作者

awk对文本处理?难!

我想要按每一个第一域作为文件分开,你的方法没能实现。
不过谢谢!

论坛徽章:
0
4 [报告]
发表于 2003-02-12 11:57 |只看该作者

awk对文本处理?难!

{ print $0 >$1}

论坛徽章:
0
5 [报告]
发表于 2003-02-12 12:03 |只看该作者

awk对文本处理?难!

{
for ( i=2; i<=NF; i++ ) printf "%s ",$i > $1;
printf "\n" >$1;
}

论坛徽章:
0
6 [报告]
发表于 2003-02-12 12:11 |只看该作者

awk对文本处理?难!

按我的理解:
你的数据文件data.txt
4001  100 200 300
400 500 600
4002  100 200 300
400 500 600
分成2个文件:
一个是4001,内容:
100 200 300
400 500 600
一个是4002,内容:
100 200 300
400 500 600

可以:
awk 'BEGIN{filename="";}
        { if(NF==4){ filename=$1; print $2 " " $3 " " $4 > filename; }
           else print > filename;
        } END {}' data.txt
呵呵,也许可以的!

论坛徽章:
0
7 [报告]
发表于 2003-02-12 13:52 |只看该作者

awk对文本处理?难!

#!/bin/awk -f
{
        if(NF==4){
                fname=$1;
                print $2,$3,$4>fname
        }
        else{
                print>>fname
        }
}

论坛徽章:
0
8 [报告]
发表于 2003-02-12 13:53 |只看该作者

awk对文本处理?难!

#!/bin/awk -f
{
        if(NF==4){
                fname=$1;
                print $2,$3,$4>fname
        }
        else{
                print>>fname
        }
}

论坛徽章:
0
9 [报告]
发表于 2004-03-10 17:30 |只看该作者

awk对文本处理?难!

awk 'NF==4{filename=$1;print $2,$3,$4 >> filename};NF==3{print $1,$2,$3 >> filename}' data.txt
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP