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
  • 相关阅读:
    java实验四
    C# 和SQL Server 类型转换
    C# 通过this关键字来扩展方法
    类型转换
    获取屏幕高度,兼容性问题解决
    LinqToDataTable
    jQuery层级元素选择器
    Javascript 常用系统内置函数
    JSON-JQuery常用技巧
    .net 调用SAP RFC函数获取数据的两种方式
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15708944.html
Copyright © 2011-2022 走看看