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
  • 相关阅读:
    第一个spring MVC
    AOP切点相关
    设计模式详解
    Spring基本原理模拟(IoC部分)
    AOP常用注解
    Integer.valueOf与Integer.parseInt的小疑惑
    IE10与IMG图片PNG显示不了 WP中的WebBrowser中无法查看PNG格式的图片
    去除Coding4Fun中MessagePrompt的边框(Border)
    windows phone 中的TextBlock的一些特性(TextWrapping,TextWrapping)
    九度 找出两个只出现了一次的数字
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15708944.html
Copyright © 2011-2022 走看看