zoukankan      html  css  js  c++  java
  • linux中将指定行数据合并为一行数据

    1、测试数据

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    01 11
    02 12
    03 13
    04 14
    05 15
    06 16
    07 17
    08 18
    09 19
    10 20

    2、将每两行数据合并为一行数据

    a、sed实现

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    01 11
    02 12
    03 13
    04 14
    05 15
    06 16
    07 17
    08 18
    09 19
    10 20
    root@DESKTOP-1N42TVH:/home/test# sed 'N; s/\n/ /' a.txt   ## 将每两行中间的换行符替换为空格
    01 11 02 12
    03 13 04 14
    05 15 06 16
    07 17 08 18
    09 19 10 20

    b、awk实现

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    01 11
    02 12
    03 13
    04 14
    05 15
    06 16
    07 17
    08 18
    09 19
    10 20
    root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 2 == 0) {print $0} else {printf("%s ", $0)}}' a.txt
    01 11 02 12
    03 13 04 14
    05 15 06 16
    07 17 08 18
    09 19 10 20

    c、paste实现

    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 10
    11 12
    13 14
    15 16
    17 18
    19 20
    root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - -
    01 02   03 04
    05 06   07 08
    09 10   11 12
    13 14   15 16
    17 18   19 20
    root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - -d " "
    01 02 03 04
    05 06 07 08
    09 10 11 12
    13 14 15 16
    17 18 19 20

    3、将每三行数据合并为一行数据

    a、awk实现

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    01 11
    02 12
    03 13
    04 14
    05 15
    06 16
    07 17
    08 18
    09 19
    10 20
    root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 3 == 0) {print $0} else {printf("%s ", $0)}}' a.txt  ## 不完整行最后缺少空格
    01 11 02 12 03 13
    04 14 05 15 06 16
    07 17 08 18 09 19
    10 20 root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 3 == 0) {print $0} else {printf("%s ", $0)}}' a.txt | sed '$ s/$/\n/'  ## sed添加空格
    01 11 02 12 03 13
    04 14 05 15 06 16
    07 17 08 18 09 19
    10 20
    root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 3 == 0) {print $0} else {printf("%s ", $0)}}' a.txt | sed '$ s/$/\n/'
    01 11 02 12 03 13
    04 14 05 15 06 16
    07 17 08 18 09 19
    10 20

    b、paste实现

    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 10
    11 12
    13 14
    15 16
    17 18
    19 20
    root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - -    ## 每三行合并为一行
    01 02   03 04   05 06
    07 08   09 10   11 12
    13 14   15 16   17 18
    19 20
    root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - - -d " "   ## 指定输出分割符
    01 02 03 04 05 06
    07 08 09 10 11 12
    13 14 15 16 17 18
    19 20

    4、每四行数据合并为一行数据

    a、awk实现

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    01 11
    02 12
    03 13
    04 14
    05 15
    06 16
    07 17
    08 18
    09 19
    10 20
    root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 4 == 0) {print $0} else {printf("%s ", $0)}}' a.txt
    01 11 02 12 03 13 04 14
    05 15 06 16 07 17 08 18
    09 19 10 20 root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 4 == 0) {print $0} else {printf("%s ", $0)}}' a.txt | sed '$ s/$/\n/'
    01 11 02 12 03 13 04 14
    05 15 06 16 07 17 08 18
    09 19 10 20
    root@DESKTOP-1N42TVH:/home/test# awk '{if(NR % 4 == 0) {print $0} else {printf("%s ", $0)}}' a.txt | sed '$ s/$/\n/' 
    01 11 02 12 03 13 04 14
    05 15 06 16 07 17 08 18
    09 19 10 20

    b、paste 实现

    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 10
    11 12
    13 14
    15 16
    17 18
    19 20
    root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - - -
    01 02   03 04   05 06   07 08
    09 10   11 12   13 14   15 16
    17 18   19 20
    root@DESKTOP-1N42TVH:/home/test# cat a.txt | paste - - - - -d " "   ## 将四行合并为一行
    01 02 03 04 05 06 07 08
    09 10 11 12 13 14 15 16
    17 18 19 20
  • 相关阅读:
    单链表的相关操作
    R学习-- 数组和矩阵
    UIButton 设置圆角 边框颜色 点击回调方法
    【独立开发人员er Cocos2d-x实战 007】使用Cocos2dx UserDefault.xml
    聊一聊多源最短路径问题(仅仅有5行代码哦)
    Android cookies正确的更新方式
    Android IntentService的使用和源代码分析
    Android应用之——最新版本号SDK V2.4实现QQ第三方登录
    嵌套路由
    我自己用
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15779410.html
Copyright © 2011-2022 走看看