免费注册 查看新帖 |

Chinaunix

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

用awk处理数据问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-13 16:01 |只看该作者 |倒序浏览
一组数据:

001|111|333|01231235668999|
002|111|222|01411556551122|
003|111|555|52911256623333|
004|111|666|09562333255252|
005|111|777|29569636200011|

如何处理成下面这样:

001|111|333|1231235668999|
002|111|222|1411556551122|
003|111|555|52911256623333|
004|111|666|9562333255252|
005|111|777|29569636200011|

即以"|"为分隔符把第四列前面0开头的去掉0,不是0的保持不变?

谢谢大家了,

论坛徽章:
0
2 [报告]
发表于 2011-06-13 16:04 |只看该作者
本帖最后由 ywlscpl 于 2011-06-13 16:06 编辑

awk -F '|' -v OFS='|' '{$4=$4+0}1'


位数太长会有问题
awk -F '|' -v OFS='|' '{sub(/^0*/,"",$4)}1'

论坛徽章:
0
3 [报告]
发表于 2011-06-13 16:07 |只看该作者
awk -F '|' -v OFS='|' '{$4=$4+0}1'


位数太长会有问题
awk -F '|' -v OFS='|' '{sub(/^0*/,"",$4)}1 ...
ywlscpl 发表于 2011-06-13 16:04



    这样做输出的是科学记数,如:2.357有+13这种形式,这样不行呀!

论坛徽章:
0
4 [报告]
发表于 2011-06-13 16:09 |只看该作者
本帖最后由 where27 于 2011-06-13 16:15 编辑

回复 1# xiao_lin
  1. awk -F\| -v OFS='|' '{sub(/^0*/,"",$4)}1' file
复制代码

论坛徽章:
0
5 [报告]
发表于 2011-06-13 16:13 |只看该作者
awk -F'|' -vOFS='|' '{$4=sprintf("%d",$4)}1'

论坛徽章:
0
6 [报告]
发表于 2011-06-13 16:17 |只看该作者
回复 4# where27


      

论坛徽章:
0
7 [报告]
发表于 2011-06-13 16:39 |只看该作者
我用个很麻烦的办法:awk -F\| '{printf"%s|%s|%s|%.0f|\n",$1,$2,$3,$4}' file

到是达到要求了,问题是如果数据有许多列,这样麻烦死了,

论坛徽章:
0
8 [报告]
发表于 2011-06-13 16:43 |只看该作者
回复 7# xiao_lin


2楼 4楼 5楼,都被楼主无视了
既然别人的回复不认真看,何必多此一贴呢

论坛徽章:
0
9 [报告]
发表于 2011-06-13 16:50 |只看该作者
回复  xiao_lin


2楼 4楼 5楼,都被楼主无视了
既然别人的回复不认真看,何必多此一贴呢
ywlscpl 发表于 2011-06-13 16:43



    是我太笨了,水平还不行,我试了楼上几位的代码,没达到要求呢?谢谢批评,多谢指教!

论坛徽章:
0
10 [报告]
发表于 2011-06-13 16:56 |只看该作者
你给的数据中|是全角的,大家回复中|是半角的,也许是这个原因
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP