免费注册 查看新帖 |

Chinaunix

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

[文本处理] 切割黏在一起的数据列 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-05 17:46 |只看该作者 |倒序浏览
一个文本,是固定的10列,由于小数过大,黏在一起(固定只有小数点后1位),请问如何切割出来,变成10列,空格分隔展现出来,求高手:
  1. 26   7  67  0   532.5   46.0  8520.7   1897.5   0.1    1  
  2. 14   7  77  0  7290.113179.8  1641.6   6889.0   1.6    0               
  3. 19  10  71  0   709.8  124.8   156.7   4305.9   0.1    0            
  4. 16  10  74  0   733.0   78.0 11723.8   5332.8   0.2    0            
  5. 12   7  81  0   680.4   29.3 10886.3   1183.3   0.1    1            
  6. 14   6  78  0  3091.7   40.2 49466.8   1398.8   0.5    0                  
  7. 15   9  74  0 12357.2  421.8197715.31411803.3   3.1    0            
  8. 14   9  75  0 11297.2  1668.4  619.71807253.8   2.9    0            
  9. 14   9  75  0 12991.9 1037.1207870.7  28287.9   3.6    0
复制代码
有的变成8列、9列
$ cat t.txt  | awk '{print NF}'
10
9
10
10
10
10
8
9
9

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
2 [报告]
发表于 2014-06-05 18:18 |只看该作者
  1. sed -r 's/(\..\B)([0-9])/\1 \2/g' file
复制代码
是这个结果吗?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2014-06-05 18:18 |只看该作者
本帖最后由 jason680 于 2014-06-05 18:23 编辑

回复 1# rushm

$ awk -vFIELDWIDTHS="2 4 4 3 8 7 8 9 6 5" '{$1=$1;print $0}' FILE
  1. 26    7   67   0    532.5    46.0   8520.7    1897.5    0.1     1
  2. 14    7   77   0   7290.1 13179.8   1641.6    6889.0    1.6     0
  3. 19   10   71   0    709.8   124.8    156.7    4305.9    0.1     0
  4. 16   10   74   0    733.0    78.0  11723.8    5332.8    0.2     0
  5. 12    7   81   0    680.4    29.3  10886.3    1183.3    0.1     1
  6. 14    6   78   0   3091.7    40.2  49466.8    1398.8    0.5     0
  7. 15    9   74   0  12357.2   421.8 197715.3 1411803.3    3.1     0
  8. 14    9   75   0  11297.2   1668. 4  619.7 1807253.8    2.9     0
  9. 14    9   75   0  12991.9  1037.1 207870.7   28287.9    3.6     0
复制代码


Note: I found some issue in your data or in my code bug
14    9   75   0  11297.2   1668. 4  619.7 1807253.8    2.9     0

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2014-06-05 18:26 |只看该作者
回复 2# WilliBhamlll

modified from your code

$ sed -r 's/(\..)(.)/\1 \2/g' FILE
  1. 26   7  67  0   532.5    46.0   8520.7    1897.5    0.1     1  
  2. 14   7  77  0  7290.1 13179.8   1641.6    6889.0    1.6     0               
  3. 19  10  71  0   709.8   124.8    156.7    4305.9    0.1     0            
  4. 16  10  74  0   733.0    78.0  11723.8    5332.8    0.2     0            
  5. 12   7  81  0   680.4    29.3  10886.3    1183.3    0.1     1            
  6. 14   6  78  0  3091.7    40.2  49466.8    1398.8    0.5     0                  
  7. 15   9  74  0 12357.2   421.8 197715.3 1411803.3    3.1     0            
  8. 14   9  75  0 11297.2   1668.4   619.7 1807253.8    2.9     0            
  9. 14   9  75  0 12991.9  1037.1 207870.7   28287.9    3.6     0
复制代码

   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
5 [报告]
发表于 2014-06-05 18:28 |只看该作者
回复 1# rushm
加了一个空格分开,为了排版整齐,可以自行调整空格数。
  1. awk '{for(i=1;i<=NF;i++)if(gsub(/\./,".",$i)>=2){$i=gensub(/\.([0-9])\B/,".\\1 ","g",$i)}}1' i
  2. 26 7 67 0 532.5 46.0 8520.7 1897.5 0.1 1
  3. 14 7 77 0 7290.1 13179.8 1641.6 6889.0 1.6 0
  4. 19 10 71 0 709.8 124.8 156.7 4305.9 0.1 0
  5. 16 10 74 0 733.0 78.0 11723.8 5332.8 0.2 0
  6. 12 7 81 0 680.4 29.3 10886.3 1183.3 0.1 1
  7. 14 6 78 0 3091.7 40.2 49466.8 1398.8 0.5 0
  8. 15 9 74 0 12357.2 421.8 197715.3 1411803.3 3.1 0
  9. 14 9 75 0 11297.2 1668.4 619.7 1807253.8 2.9 0
  10. 14 9 75 0 12991.9 1037.1 207870.7 28287.9 3.6 0
复制代码

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
6 [报告]
发表于 2014-06-05 18:32 |只看该作者
回复 4# jason680

谢谢!\B多余了。。

论坛徽章:
0
7 [报告]
发表于 2014-06-05 19:33 |只看该作者
好厉害 谢谢各位。。。。
回复 2# WilliBhamlll

请问能稍微介绍下你这匹配逻辑吗
(\..\B)([0-9])分别代表啥?
替换成\1 \2又是什么意思

   

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
8 [报告]
发表于 2014-06-05 19:41 |只看该作者
回复 7# rushm
  1. 123.456
  2. (\..\B)([0-9])

  3. \. => .
  4. \.. => .4
  5. (\..\B)([0-9]) => .45

  6. \1 \2正则中的反向引用(捕获)
  7. \1 => .4 (前面捕获到的第一对括号中的内容)
  8. \2 => 5
  9. \1 \2 => .4 5
  10. \B表示单词内的一个位置,不占实际字符,
  11. 而且这题可以不要。
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-09-22 10:16 |只看该作者
谢谢高手,很详细,懂了
回复 8# Herowinter


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
10 [报告]
发表于 2014-09-22 10:38 |只看该作者
  1. $ sed -r 's/\.(.)/.\1 /g' i | column -t
  2. 26  7   67  0  532.5    46.0     8520.7    1897.5     0.1  1
  3. 14  7   77  0  7290.1   13179.8  1641.6    6889.0     1.6  0
  4. 19  10  71  0  709.8    124.8    156.7     4305.9     0.1  0
  5. 16  10  74  0  733.0    78.0     11723.8   5332.8     0.2  0
  6. 12  7   81  0  680.4    29.3     10886.3   1183.3     0.1  1
  7. 14  6   78  0  3091.7   40.2     49466.8   1398.8     0.5  0
  8. 15  9   74  0  12357.2  421.8    197715.3  1411803.3  3.1  0
  9. 14  9   75  0  11297.2  1668.4   619.7     1807253.8  2.9  0
  10. 14  9   75  0  12991.9  1037.1   207870.7  28287.9    3.6  0
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP