免费注册 查看新帖 |

Chinaunix

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

数据处理,老大们帮帮忙 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-22 08:27 |只看该作者 |倒序浏览
源数据
0001戴源    0000300940
0002黄新国  0000302112
0006成正清  0000259880
0014彭文鑫  0000206154
0015陈殷    0000206558
0016刘勇    0000206306
0017胡国夫  0000172034
0018林渡民  0000172034
0020邓红强  0000166062
0021易红宇  0000159632
0022何毅    0000155468
0023廖志勇强0000145976
0024柳美景  0000272068
0025胡正杰东0000205840


我希望得到的数据
0001 戴源    00003009.40
0002 黄新国  00003021.12
0006 成正清  00002598.80
0014 彭文鑫  00002061.54
0015 陈殷    00002065.58
0016 刘勇    00002063.06
0017 胡国夫  00001720.34
0018 林渡民  00001720.34
0020 邓红强  00001660.62
0021 易红宇  00001596.32
0022 何毅    00001554.68
0023 廖志勇强  00001459.76
0024 柳美景  00002720.68
0025 胡正杰东  00002058.40


我试了半天,没弄好,请高手们帮帮忙

论坛徽章:
0
2 [报告]
发表于 2004-04-22 08:37 |只看该作者

数据处理,老大们帮帮忙

try :

  1. sed 's/^\(....\)\(.*\)\(..\)$/\1 \2.\3/' ur_file
复制代码

论坛徽章:
0
3 [报告]
发表于 2004-04-22 09:04 |只看该作者

数据处理,老大们帮帮忙

谢谢john_student 我刚试了一下,确实是转换成功了,可是我又发现新的问题,原来源数据中的名字是固定的8个字符。当我转换后有的名字后面有两个空格,有的后面一个空格,还有一个名字为4个字的,后面没有空格,而我的本意是要把这些数据分成3个域,我对SED不是很了解。

编号  姓名   金额

论坛徽章:
0
4 [报告]
发表于 2004-04-22 09:07 |只看该作者

数据处理,老大们帮帮忙

sed 's/^\(....\)\(.*\)\(..\)$/\1 \2.\3/'

这句的意思,我也看不懂。能不能麻烦解释一下

论坛徽章:
0
5 [报告]
发表于 2004-04-22 09:36 |只看该作者

数据处理,老大们帮帮忙

awk可以吗:
  1. awk '{gsub(/^..../,"& ");gsub(/..$/,".&");print}' file
复制代码

论坛徽章:
0
6 [报告]
发表于 2004-04-22 10:11 |只看该作者

数据处理,老大们帮帮忙

两个句子的结果一样,还是同样的问题

论坛徽章:
0
7 [报告]
发表于 2004-04-22 10:41 |只看该作者

数据处理,老大们帮帮忙

前面不是有awk的一个用法么

NF过滤一下,把有3个域的过滤出来处理,然后处理剩下的就行拉
awk 'NF==3 {print }'剩下的继续。。。××××

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
8 [报告]
发表于 2004-04-22 10:59 |只看该作者

数据处理,老大们帮帮忙

繁了点
  1. sed s'/^\([0-9]\{4\}\)\([^0-9 ]*\)[ ]*\([0-9]*\)\([0-9]\{2\}\)$/\1 \2 \3.\4/' file_name
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-04-22 11:10 |只看该作者

数据处理,老大们帮帮忙

  1. sed 's/ //g;s/^\([0-9]\{1,\}\)\([^0-9]\{1,\}\)\(.*\)/\1 \2 \3/' filename
  2. 0001 戴源 0000300940
  3. 0002 黄新国 0000302112
  4. 0006 成正清 0000259880
  5. 0014 彭文鑫 0000206154
  6. 0015 陈殷 0000206558
  7. 0016 刘勇 0000206306
  8. 0017 胡国夫 0000172034
  9. 0018 林渡民 0000172034
  10. 0020 邓红强 0000166062
  11. 0021 易红宇 0000159632
  12. 0022 何毅 0000155468
  13. 0023 廖志勇强 0000145976
  14. 0024 柳美景 0000272068
  15. 0025 胡正杰东 0000205840
复制代码

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
10 [报告]
发表于 2004-04-22 12:00 |只看该作者

数据处理,老大们帮帮忙

源文件是定长格式的,简单的办法是在第4和第12个字符后面各加一个空格,如下
  1. sed 's/^\(....\)\(........\)/\1 \2 /' ur_file
复制代码

不过第二和第三字段会有多个空格,我没有中文环境,请楼主试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP