zoukankan      html  css  js  c++  java
  • linux系统中将一列数据转换为指定的行

    1、按行排列

    [root@centos7 test]# cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [root@centos7 test]# cat a.txt | xargs -n 4
    01 02 03 04
    05 06 07 08
    09 10 11 12
    13 14 15 16
    17 18 19 20
    [root@centos7 test]# cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [root@centos7 test]# awk '{if(NR % 4 == 0) {print $0} else {printf("%s ", $0)}}' a.txt
    01 02 03 04
    05 06 07 08
    09 10 11 12
    13 14 15 16
    17 18 19 20
    [root@centos7 test]# cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [root@centos7 test]# awk '{if(NR % 4 != 0) ORS = " "; else ORS = "\n"; print}' a.txt
    01 02 03 04
    05 06 07 08
    09 10 11 12
    13 14 15 16
    17 18 19 20

    2、按列排列

    [root@centos7 test]# cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [root@centos7 test]# cat a.txt | xargs -n 5 > tmp
    [root@centos7 test]# cat tmp
    01 02 03 04 05
    06 07 08 09 10
    11 12 13 14 15
    16 17 18 19 20
    [root@centos7 test]# for i in `seq $(head -n 1 tmp|awk '{print NF}')`; do cut -d " " -f $i tmp | tr "\n" " "| sed '$ s/$/\n/' >> b.txt; done
    [root@centos7 test]# cat b.txt
    01 06 11 16
    02 07 12 17
    03 08 13 18
    04 09 14 19
    05 10 15 20
    [root@centos7 test]# cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [root@centos7 test]# awk '{if(NR % 5 == 0) {print $0} else {printf("%s ", $0)}}' a.txt > tmp
    [root@centos7 test]# cat tmp
    01 02 03 04 05
    06 07 08 09 10
    11 12 13 14 15
    16 17 18 19 20
    [root@centos7 test]# for i in `seq $(head -n 1 tmp | awk '{print NF}')`; do awk -v a=$i '{print $a}' tmp | awk BEGIN{RS=EOF}'{gsub("\n"," ");print}' >> c.txt;done
    [root@centos7 test]# cat c.txt
    01 06 11 16
    02 07 12 17
    03 08 13 18
    04 09 14 19
    05 10 15 20
  • 相关阅读:
    第5次作业
    第六次作业
    第五次作业
    软件需求最佳实践阅读笔记05
    软件需求最佳实践阅读笔记04
    构建民航知识图谱
    软件需求最佳实践阅读笔记03
    软件需求最佳实践阅读笔记02
    软件需求最佳实践阅读笔记01
    程序员的自我修养阅读笔记03
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/14663910.html
Copyright © 2011-2022 走看看