免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 15436 | 回复: 6

[文本处理] 怎样把多列数据转换为一行? [复制链接]

论坛徽章:
1
巨蟹座
日期:2014-02-11 14:21:15
发表于 2021-08-19 23:23 |显示全部楼层
各位,有个格式转换问题想请教大家。

原格式:
a1   abcd   a2    cdef
a3   ghij    a4    klmn

a1   aaaa   a2   bbbb
a3   ccccc  a4   ddddd
a5   eeee   a6   ffffff

a1   yyyy     a2   zzzzz
a3   wwww  a4   xxxx




转换为:

a1   abcd   a2    cdef  a3   ghij      a4    klmn
a1   aaaa   a2   bbbb  a3   ccccc    a4   ddddd   a5   eeee   a6   ffffff
a1   yyyy   a2   zzzzz  a3   wwww  a4   xxxx

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
发表于 2021-11-18 17:44 |显示全部楼层
回复 1# smyjgj


  1. cat 1
  2. a1   abcd   a2    cdef
  3. a3   ghij    a4    klmn

  4. a1   aaaa   a2   bbbb
  5. a3   ccccc  a4   ddddd
  6. a5   eeee   a6   ffffff

  7. a1   yyyy     a2   zzzzz
  8. a3   wwww  a4   xxxx

  9. awk '/^$/{print a;a="";next}{a=a?a" "$0:$0}END{if(a){print a}}' 1
  10. a1   abcd   a2    cdef a3   ghij    a4    klmn
  11. a1   aaaa   a2   bbbb a3   ccccc  a4   ddddd a5   eeee   a6   ffffff
  12. a1   yyyy     a2   zzzzz a3   wwww  a4   xxxx
复制代码

论坛徽章:
1
19周年集字徽章-年
日期:2020-10-29 09:39:21
发表于 2021-11-19 08:27 |显示全部楼层
本帖最后由 legs 于 2021-11-19 14:15 编辑
  1. perl -0pe's#(?<!^)\n(?!\z)# #mg'
复制代码

论坛徽章:
6
15-16赛季CBA联赛之浙江
日期:2021-07-14 11:18:4315-16赛季CBA联赛之浙江
日期:2021-08-20 17:26:1015-16赛季CBA联赛之天津
日期:2021-09-01 10:56:4619周年集字徽章-19
日期:2021-10-12 11:08:032016科比退役纪念章
日期:2021-10-12 11:33:4515-16赛季CBA联赛之深圳
日期:2021-11-11 14:25:38
发表于 2021-12-22 10:05 |显示全部楼层
  1. awk 'BEGIN{RS="\n[ \t\n]*\n|^\n+"}{$1=$1}1' test.txt
  2. a1 abcd a2 cdef a3 ghij a4 klmn
  3. a1 aaaa a2 bbbb a3 ccccc a4 ddddd a5 eeee a6 ffffff
  4. a1 yyyy a2 zzzzz a3 wwww a4 xxxx
复制代码

论坛徽章:
1
巨蟹座
日期:2014-02-11 14:21:15
发表于 2021-12-29 16:02 |显示全部楼层
感谢楼上的,除了perl这个我没有还原结果外,其他都是可行的,再次感谢。

论坛徽章:
6
15-16赛季CBA联赛之浙江
日期:2021-07-14 11:18:4315-16赛季CBA联赛之浙江
日期:2021-08-20 17:26:1015-16赛季CBA联赛之天津
日期:2021-09-01 10:56:4619周年集字徽章-19
日期:2021-10-12 11:08:032016科比退役纪念章
日期:2021-10-12 11:33:4515-16赛季CBA联赛之深圳
日期:2021-11-11 14:25:38
发表于 2022-04-19 10:28 |显示全部楼层
试试sed用法
  1. sed -n '/a1/x;/a1/!H;s/\n/ /g;${x;s/\n/ /g};/a1/p' test.txt
复制代码

效果
  1. a1   abcd   a2    cdef  a3   ghij    a4    klmn
  2. a1   aaaa   a2   bbbb a3   ccccc  a4   ddddd a5   eeee   a6   ffffff
  3. a1   yyyy     a2   zzzzz a3   wwww  a4   xxxx
复制代码

论坛徽章:
0
发表于 2022-07-01 11:09 |显示全部楼层
本帖最后由 ll251 于 2022-07-01 11:12 编辑

awk -v RS='\n\n' '{gsub("\n"," ",$0);print}' 1
sed -r ':a;N;/[a-z]$/{s/\n/ /;ta};P;d' 1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP