1. 程式人生 > 其它 >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