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
复制代码

 

posted @   小鲨鱼2018  阅读(178)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-12-19 linux系统scp远程传输命令
2020-12-19 linux系统中ssh部署两台服务器远程免密登录
2020-12-19 linux系统中创建网络会话
2020-12-19 python中给列表元素排序
2020-12-19 python中返回列表中元素的索引
点击右上角即可分享
微信分享提示