• linux 系统中实现列转行 及 行转列


     列转行

    1、paste

    liujiaxin01@PC1:~/test$ seq -f %02g 10
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    liujiaxin01@PC1:~/test$ seq -f %02g 10 > a.txt
    liujiaxin01@PC1:~/test$ cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    liujiaxin01@PC1:~/test$ paste -s -d " " a.txt
    01 02 03 04 05 06 07 08 09 10

    2、tr + sed

    liujiaxin01@PC1:~/test$ cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    liujiaxin01@PC1:~/test$ tr "\n" " " < a.txt | sed 's/$/\n/'
    01 02 03 04 05 06 07 08 09 10

    3、xargs(这个命令有局限性, 行数有限制)

    liujiaxin01@PC1:~/test$ cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    liujiaxin01@PC1:~/test$ cat a.txt | xargs
    01 02 03 04 05 06 07 08 09 10

    4、awk

    liujiaxin01@PC1:~/test$ cat a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    liujiaxin01@PC1:~/test$ awk '{printf("%s ", $0)} END {printf("\n")}' a.txt
    01 02 03 04 05 06 07 08 09 10

    行转列

    测试数据

    liujiaxin01@PC1:~/test$ seq -f %02g 10 | paste -d " " -s > a.txt
    liujiaxin01@PC1:~/test$ cat a.txt
    01 02 03 04 05 06 07 08 09 10

    1、tr

    liujiaxin01@PC1:~/test$ cat a.txt
    01 02 03 04 05 06 07 08 09 10
    liujiaxin01@PC1:~/test$ cat a.txt | tr " " "\n"
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10

    2、sed

    liujiaxin01@PC1:~/test$ cat a.txt
    01 02 03 04 05 06 07 08 09 10
    liujiaxin01@PC1:~/test$ sed 's/ /\n/g' a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10

    3、xargs(有局限性)

    liujiaxin01@PC1:~/test$ cat a.txt
    01 02 03 04 05 06 07 08 09 10
    liujiaxin01@PC1:~/test$ cat a.txt | xargs -n 1
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10

    4、awk

    liujiaxin01@PC1:~/test$ cat a.txt
    01 02 03 04 05 06 07 08 09 10
    liujiaxin01@PC1:~/test$ awk '{ORS = " "}{print $0} END {printf("\n")}' a.txt
    01 02 03 04 05 06 07 08 09 10

    5、awk

    liujiaxin01@PC1:~/test$ cat a.txt
    01 02 03 04 05 06 07 08 09 10
    liujiaxin01@PC1:~/test$ awk '{for(i = 1; i <= NF; i++) printf("%s%s", $i,"\n")}' a.txt
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
  • 相关阅读:
    PowerDesigner概念设计模型(CDM)中的3种实体关系
    基于Prototype 1.6.2 框架下的数据分页
    中国地区,北京54坐标系条带号的选
    C#中MessageBox的使用
    C#注册表的读,写,删除,查找 (转)
    C# Tostring() 格式大全 [转]
    Layer features in this layer set, ArcEngine图层标注源码 (转)
    判断点是否在多边形之内的方法
    C#导入Excel到Dataset和导出Excel到DataTable
    Server.MapPath方法的应用方法
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15479520.html
Copyright © 2020-2023  润新知