Linux教程

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

本文主要是介绍linux中实现将连续的多列数据合并为一列数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

 

这篇关于linux中实现将连续的多列数据合并为一列数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!