当前位置:  技术问答>linux和unix

拜请各位大牛,实在是搞不定了!!!! 急急急!!!!!

    来源: 互联网  发布时间:2017-01-17

    本文导语:  缘由:从数据库中导出的每天的增量文件, 每个字段用“|” 间隔,   由于所应用语言比较特殊处理文本相当的麻烦(百度都搜不到这种语言),决定用SHELL处理下文本,可是没搞定,希望高手帮帮忙          之前问...


缘由:从数据库中导出的每天的增量文件, 每个字段用“|” 间隔,   由于所应用语言比较特殊处理文本相当的麻烦(百度都搜不到这种语言),决定用SHELL处理下文本,可是没搞定,希望高手帮帮忙
         之前问过一些,但始终没有达到理想的效果。可能我例举的不全 ,希望各位也帮着多想想

文件内容如下:一行
|0406|654321000000003632               |      |223501888812345678|张三   |0000|0000000.00|0000000000.00|00.00|011201|259|123456140000000013|00004062410|1234560100011900125=49121002147281   |43E39B564A4C9434|09JUL11|B|+000100.00|-000000888.88|0000300.00|00050|000.50|+100.50|+0001100.00|+000100|-100|-100.00|-00100.00|-00050|-00050.50|MBKIO     |011201CARDCENTER     |002617      |                 ]?垰??  |


要求:
      把多余的0去掉, 空格去掉,小数取有效数值,正负号不能去掉,不知道我说明白没有,但愿大牛们能听的懂

     例: |0406| 处理后 |406|
            |      |   处理后 ||
            |223501888812345678| 处理后 |223501888812345678|
            |张三   |  处理后   |张三|
            |0000|  处理后  || 
            |011201| 处理后 |11201|
            |09JUL11| 处理后 |9JUL11|
            |+000100.00|  处理后 |+100.00|
            |-000000888.88| 处理后 |-888.88|
            |0000300.00|   处理后 |300.00|
            |00050|     处理后 |50|
            |000.50|  处理后  |0.50|
            |+000100|  处理后 |+100|
            |-00100.00|  处理后 |-100.00|
            |-00050.50|  处理后 |-50.50|
            |011201CARDCENTER     | 处理后 |011201CARDCENTER|


之前请教各位大牛遇到的问题:   数太长  处理后变成科学计数法了,正负号 小数点 处理不好,总会截错位置。。。

   本人搞了三四天,实在搞不定了。。。。。。。。。。

|
sed -e 's/ //g'  -e 's/|0*/|/g' -e 's/|+0*/|+/g' -e 's/|-0*/|-/g' -e 's/|./|0./g' -e 's/|0.00/|/g' file>result


|406|654321000000003632||223501888812345678|张三|||||11201|259|123456140000000013|4062410|1234560100011900125=49121002147281|43E39B564A4C9434|9JUL11|B|+100.00|-888.88|300.00|50|0.50|+100.50|+1100.00|+100|-100|-100.00|-100.00|-50|-50.50|MBKIO|11201CARDCENTER|2617|]?垰??|

|

000000.0000处理后是咋样的???
 |09JUL11| 处理后 |9JUL11| 跟|011201CARDCENTER | 处理后 |011201CARDCENTER|不是冲突吗?
你是指的 数字+非数字+数字就去掉前面的0 数字+非数字就不去掉???

|
sed -e 's/ //g' -e 's/|0*/|/g' -e 's/.00//g' -e 's/+0*/+/g' -e 's/-0*/-/g' yourfile > yourfile.new

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 半路出家转行学编程如何才能成为大牛?
  • 呼唤大牛,大牛降临护乎!!!(linux,开启进程问题)
  • 求大牛们赐教!
  • 请大牛指导程序思路
  • 难道csdn没有gstreamer大牛?
  • EJB这么火,决定开始学习,请各位大牛指教,初学该看什么书?
  • 首先,这不是个问题,是个总结。(弱智型的。大牛们不要笑话俺)
  • 那位大牛能知道????
  • 请教版上大牛~
  • 安装net-snmp时遇到问题了,请大牛们指导
  • [求助大牛]如何将连续的多个空格换成tab?
  • [跪求大牛]硬盘有点泄露了。。。
  • 求shell大牛指点
  • 请教各位大牛一个makefile的问题
  • linux下采集视频数据的相关问题,是大牛就进来吧~~
  • 请大牛帮忙,shell脚本的问题
  • 有关Ubuntu的问题,请大牛指点(内详)
  • linux的图形界面为什么没有命令行重要呢,大牛们帮我解惑吧
  • linux大牛来救!HTTP服务器配置文件directory容器中options参数怎么一回事?
  • 请教各位大牛~~那个系统调用open()创建的是什么类型的文件?
  • !!请各位大牛帮忙了,在linux下提取系统时间的话,用什么方法能提取到比毫秒更精确的时间呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3