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
  • 相关阅读:
    ArrayList用法
    MessageBox
    将文本文件导入Sql数据库
    在桌面和菜单中添加快捷方式
    泡沫排序
    Making use of localized variables in javascript.
    Remove double empty lines in Visual Studio 2012
    Using Operations Manager Connectors
    Clear SharePoint Designer cache
    Programmatically set navigation settings in SharePoint 2013
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/14663910.html
Copyright © 2011-2022 走看看