zoukankan      html  css  js  c++  java
  • linux shell实现将每隔一个空格的两列并排为一列

    1、测试数据

    root@PC1:/home/test# ls
    outcome.ped
    root@PC1:/home/test# cat outcome.ped     ## 测试数据, 将每隔一个空格的两列并排为一列
    G G C C G G G G G A A A G G G C
    G G G C G G G G G G A A A G C C
    G G C C G G G G G G A A A G G C
    G G C C G G G G G G A A G G G G
    G G C C G G G G G G A A A G G C
    G G C C G G G G G G A A A A C C
    G G C C G G A G A A A A G G C C
    G G C C G G A G A A A A G G C C
    root@PC1:/home/test# cp outcome.ped outcome.ped_bak   ## 备份数据
    root@PC1:/home/test# ls
    outcome.ped  outcome.ped_bak

    2、sed实现

    root@PC1:/home/test# ls
    outcome.ped  outcome.ped_bak
    root@PC1:/home/test# cat outcome.ped    ## 测试数据
    G G C C G G G G G A A A G G G C
    G G G C G G G G G G A A A G C C
    G G C C G G G G G G A A A G G C
    G G C C G G G G G G A A G G G G
    G G C C G G G G G G A A A G G C
    G G C C G G G G G G A A A A C C
    G G C C G G A G A A A A G G C C
    G G C C G G A G A A A A G G C C
    root@PC1:/home/test# let num=$(head -n 1 outcome.ped | awk '{print NF}')/2   ## 统计列数并确定需要替换的列数
    root@PC1:/home/test# echo $num
    8
    root@PC1:/home/test# for i in `seq $num`; do sed "s/ //$i" outcome.ped -i; done   ## 利用sed替换
    root@PC1:/home/test# ls
    outcome.ped  outcome.ped_bak
    root@PC1:/home/test# cat outcome.ped   ## 查看替换效果
    GG CC GG GG GA AA GG GC
    GG GC GG GG GG AA AG CC
    GG CC GG GG GG AA AG GC
    GG CC GG GG GG AA GG GG
    GG CC GG GG GG AA AG GC
    GG CC GG GG GG AA AA CC
    GG CC GG AG AA AA GG CC
    GG CC GG AG AA AA GG CC

    3、awk 实现

    root@PC1:/home/test# ls
    outcome.ped
    root@PC1:/home/test# cat outcome.ped
    G G C C G G G G G A A A G G G C
    G G G C G G G G G G A A A G C C
    G G C C G G G G G G A A A G G C
    G G C C G G G G G G A A G G G G
    G G C C G G G G G G A A A G G C
    G G C C G G G G G G A A A A C C
    G G C C G G A G A A A A G G C C
    G G C C G G A G A A A A G G C C
    root@PC1:/home/test# cp outcome.ped outcome.ped_bak   ## 备份数据
    root@PC1:/home/test# ls
    outcome.ped  outcome.ped_bak
    root@PC1:/home/test# awk '{for(i = 1; i <= NF; i++) if(i % 2 != 0) {printf("%s", $i)} else {printf("%s ", $i)}; printf("\n")}' outcome.ped ## 利用awk列循环判断实现
    GG CC GG GG GA AA GG GC
    GG GC GG GG GG AA AG CC
    GG CC GG GG GG AA AG GC
    GG CC GG GG GG AA GG GG
    GG CC GG GG GG AA AG GC
    GG CC GG GG GG AA AA CC
    GG CC GG AG AA AA GG CC
    GG CC GG AG AA AA GG CC
  • 相关阅读:
    Guzz入门教程
    设计模式开题
    纪录idea不能创建class类问题(Cannot Create Class)
    dbrouter实现流程图
    记录一次concurrent mode failure问题排查过程以及解决思路
    程序员的自我修养
    CyclicBarrier之共享锁的理解
    sed选项详解(options)
    sed 范围查找
    Sed命令
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15708944.html
Copyright © 2011-2022 走看看