免费注册 查看新帖 |

Chinaunix

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

求助 awk编程,如何处理连在一起的记录 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-03 11:29 |只看该作者 |倒序浏览
要处理一个文本
文本中有2个连在一起的字段,长度分别为11(不定长)和8(定长),现在碰到的问题是
如果11那个字段填满之后,这两个字段间就没有分隔符了,想分别取这两个字段要怎么做
。。
尝试用substr未果。求高人指点
ps。我现在的想法是能不能在11后面加个自定义分隔符,无奈对awk编程刚刚上手,迷惑中

论坛徽章:
0
2 [报告]
发表于 2009-06-03 11:40 |只看该作者
上数据

论坛徽章:
0
3 [报告]
发表于 2009-06-03 11:43 |只看该作者
不明白LZ的意思   
有数据的  截段上来看看

论坛徽章:
0
4 [报告]
发表于 2009-06-03 11:45 |只看该作者
猜一个吧
  1. [root@Mylinux tmp]# cat file
  2. aaa 1234567890112345678
  3. bbc 1234       12345678
  4. bbc 123        12345678
  5. [root@Mylinux tmp]# awk 'NF==3;NF==2{print $1,substr($2,1,11),substr($2,12)}' file
  6. aaa 12345678901 12345678
  7. bbc 1234       12345678
  8. bbc 123        12345678
复制代码

论坛徽章:
0
5 [报告]
发表于 2009-06-03 11:46 |只看该作者
1       111170115110506 上海海祥福安居房地产咨询农业银行上海分行        
2       111170150210227 上海德康家具有限公司     农业银行上海分行     


就是$3 $4,像第二条记录这种就很好读取,第一条记录这种情况怎么读取。

论坛徽章:
0
6 [报告]
发表于 2009-06-03 11:47 |只看该作者
你的意思是你只想读取 农业银行上海分行 这个域???

论坛徽章:
0
7 [报告]
发表于 2009-06-03 11:50 |只看该作者

回复 #6 xiachunmen 的帖子

我要把第三个域和第四个域分别读出来放到某个表里面去
楼上说的那个awk可以处理一条记录,但是像这个文件里有的有分隔符有的没分隔符。我怎么样写个awk批量导入呢。。

论坛徽章:
0
8 [报告]
发表于 2009-06-03 11:51 |只看该作者
[root@Mylinux tmp]# cat file
1       111170115110506 上海海祥福安居房地产咨询农业银行上海分行        
2       111170150210227 上海德康家具有限公司     农业银行上海分行
[root@Mylinux tmp]# awk 'NF==4;NF==3{print $1,$2,substr($3,1,12),substr($3,13)}' file
1 111170115110506 上海海祥福安居房地产咨询 农业银行上海分行
2       111170150210227 上海德康家具有限公司     农业银行上海分行

不知道你的系统里中文算一个字符还是2个

论坛徽章:
0
9 [报告]
发表于 2009-06-03 12:15 |只看该作者
[root@test1 diff]# cat 1
123 456789  1234567891234
[root@test1 diff]# awk '{print $1,$2,substr($3,1,(length($3)-4)),substr($3,(length($3)-3))}' 1
123 456789 123456789 1234

[ 本帖最后由 star_wm_craft 于 2009-6-3 12:43 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-06-03 16:59 |只看该作者
多谢回答的各位
现在我想改写原文件怎么办呢。以上的awk都只是输出,我想把原文件改成第3域和第4域之间有个空格。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP