ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux中实现将连续的多列数据合并为一列数据

2022-01-08 20:35:27  阅读:169  来源: 互联网

标签:txt 1N42TVH root DESKTOP linux test home 多列 数据


1、测试数据

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 02 03 04 05 06 07 08 09
11 12 13 14 15 16 17 18 19

 

2、实现将连续的三列数据合并为一列数据

root@DESKTOP-1N42TVH:/home/test# ls
a.txt
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 02 03 04 05 06 07 08 09
11 12 13 14 15 16 17 18 19
root@DESKTOP-1N42TVH:/home/test# for i in `head -n 1 a.txt | awk '{print NF}' | xargs seq`; do cut -d " " -f $i a.txt | paste -s -d " " >> temp1; done
root@DESKTOP-1N42TVH:/home/test# ls
a.txt  temp1
root@DESKTOP-1N42TVH:/home/test# cat temp1  ## 转置后数据
01 11
02 12
03 13
04 14
05 15
06 16
07 17
08 18
09 19
root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 3 == 0) {print $0} else {printf("%s ", $0)}}' temp1 > temp2  ## 每三行合并为一行
root@DESKTOP-1N42TVH:/home/test# ls
a.txt  temp1  temp2
root@DESKTOP-1N42TVH:/home/test# cat temp2
01 11 02 12 03 13
04 14 05 15 06 16
07 17 08 18 09 19
root@DESKTOP-1N42TVH:/home/test# for i in `head -n 1 temp2 | awk '{print NF}' | xargs seq`; do cut -d " " -f $i temp2 | paste -s -d " " >> result; done
root@DESKTOP-1N42TVH:/home/test# ls
a.txt  result  temp1  temp2
root@DESKTOP-1N42TVH:/home/test# cat a.txt
01 02 03 04 05 06 07 08 09
11 12 13 14 15 16 17 18 19
root@DESKTOP-1N42TVH:/home/test# cat result  ## 最终结果
01 04 07
11 14 17
02 05 08
12 15 18
03 06 09
13 16 19

 

标签:txt,1N42TVH,root,DESKTOP,linux,test,home,多列,数据
来源: https://www.cnblogs.com/liujiaxin2018/p/15779444.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有