免费注册 查看新帖 |

Chinaunix

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

注册求助;如何删除txt文档每行未尾的统计数(已解决!请围观) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-16 15:43 |只看该作者 |倒序浏览
本帖最后由 pkd19800128 于 2013-03-19 05:01 编辑

  有系统导出的数据格式如下面的样本文件,需要去掉每行未尾的统计数字,由于数据较大用excel导进导出处理很麻烦,想用perl解决,望各位大侠抽些时间,帮忙写个代码,谢谢各位先!

系统导出的样本文件: a.txt
11 26 55 79 89 92    105
11 23 59 73 89 82      55
01 12 13 14 15 16      42
01 02 03 09 20 52      51
01 22 23 29 40 55      23
11 22 43 59 61 77      11
01 02 03 09 10 18    132
01 32 63 69 70 99        1
01 02 03 09 10 20        2
12 22 23 39 40 51     121
01 02 03 09 10 23      33
01 02 03 09 10 24      12
01 02 03 09 10 25        9
01 02 03 09 10 30        3
01 02 03 09 10 33    156
01 02 03 09 12 15        5

想要的结果: b.txt
11 26 55 79 89 92     
11 23 59 73 89 82      
01 12 13 14 15 16      
01 02 03 09 20 52      
01 22 23 29 40 55      
11 22 43 59 61 77      
01 02 03 09 10 18   
01 32 63 69 70 99        
01 02 03 09 10 20        
12 22 23 39 40 51   
01 02 03 09 10 23      
01 02 03 09 10 24      
01 02 03 09 10 25        
01 02 03 09 10 30        
01 02 03 09 10 33   
01 02 03 09 12 15        

论坛徽章:
0
2 [报告]
发表于 2013-03-16 16:35 |只看该作者
本帖最后由 kk861123 于 2013-03-16 18:00 编辑
  1. perl -pe "s/\s+\S+$//" a.txt > b.txt
复制代码

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
3 [报告]
发表于 2013-03-16 16:42 |只看该作者
回复 1# pkd19800128


    直接用awk 来做更合适
  1. awk '{for(i=1;i<NF;i++){printf("%s ",$i)} printf("\n")}'
复制代码

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
4 [报告]
发表于 2013-03-16 17:28 |只看该作者
为什么要加一个n的参数那?-pe应该就搞定了
回复 2# kk861123


   

论坛徽章:
0
5 [报告]
发表于 2013-03-16 18:01 |只看该作者
回复 4# kernel69


    谢谢,已修正

论坛徽章:
0
6 [报告]
发表于 2013-03-16 21:47 |只看该作者
谢谢几位大侠!本人小白一个,
只知道这样可进入运行#!/usr/bin/perl
请问如何运行这个代码? perl -pe "s/\s+\S+$//" a.txt > b.txt
awk更没接触过求指点?

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
7 [报告]
发表于 2013-03-16 22:41 |只看该作者
直接在终端下执行就行了
回复 6# pkd19800128


   

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
8 [报告]
发表于 2013-03-16 22:51 |只看该作者
kk861123 发表于 2013-03-16 16:35


加 -i 更新合适,都不需要重定向。基本用 Perl 做起来远比 awk 方便。
  1. perl -i.bak -pe "s/\s+\S+$//" a.txt
复制代码

论坛徽章:
0
9 [报告]
发表于 2013-03-16 23:13 |只看该作者
终端下执行perl -pe "s/\s+\S+$//" a.txt > b.txt 生成的b.txt不符合要求,没有去掉统计数……

谢谢kernel69让我了解了这类一行脚本的运行方法

望哪位大侠抽个时间帮忙写个perl代码!终端下执行不方便

论坛徽章:
0
10 [报告]
发表于 2013-03-17 11:48 |只看该作者
回复 9# pkd19800128


    你的数据貌似在结尾还会有空格?给你个脚本 - -
  1. #!/usr/bin/perl -lp -i'.bak'
  2. s/\s+\S+\s*$//;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP