Chinaunix

标题: 怎样把多列数据转换为一行? [打印本页]

作者: smyjgj    时间: 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


作者: wh7211    时间: 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
复制代码

作者: legs    时间: 2021-11-19 08:27
本帖最后由 legs 于 2021-11-19 14:15 编辑
  1. perl -0pe's#(?<!^)\n(?!\z)# #mg'
复制代码

作者: a5love3n    时间: 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
复制代码

作者: smyjgj    时间: 2021-12-29 16:02
感谢楼上的,除了perl这个我没有还原结果外,其他都是可行的,再次感谢。

作者: a5love3n    时间: 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
复制代码

作者: ll251    时间: 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




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2