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
  • 相关阅读:
    Android零基础入门第34节:Android中基于监听的事件处理
    【洛谷】3953:逛公园【反向最短路】【记忆化搜索(DP)统计方案】
    【洛谷】1608:路径统计 1144:最短路计数
    【洛谷】1081:跑路【倍增】【最短路】
    照着例子学习protobuf-python
    NodeJs与ActionScript的GET和POST通讯
    编程语言应用领域(转)
    我是C#上层转到嵌入式和单片机的
    转发一位老师的文章,希望能给你带来帮助
    沈逸的IT专栏博客记录
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15708944.html
Copyright © 2011-2022 走看看