You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk/sed交换固定4行FASTA文件中的指定行

使用awk或sed实现固定4行FASTA文件的行互换

问题描述

我有一个固定4行的FASTA格式文件,原内容如下:

>ID.1
GGAACACGACATCCTGCAGGGTTAAAAAAGAAAAAATCAGTAAAAGTACTGGA
>ID.2
GGAATACCACATCCCGCAGGGTTAAAAAAGAAAAAATCAGTAACAGTACTGGA

需要实现第1行与第3行互换、第2行与第4行互换,最终得到如下结果:

>ID.2
GGAATACCACATCCCGCAGGGTTAAAAAAGAAAAAATCAGTAACAGTACTGGA
>ID.1
GGAACACGACATCCTGCAGGGTTAAAAAAGAAAAAATCAGTAAAAGTACTGGA

解决方案

1. 使用awk

通过缓存每行内容,最后按目标顺序输出:

awk 'NR==1{l1=$0} NR==2{l2=$0} NR==3{l3=$0} NR==4{l4=$0} END{print l3; print l4; print l1; print l2}' input.fasta

简单说明:用变量分别存储第1到4行的内容,处理完所有行后,按3→4→1→2的顺序打印。

2. 使用sed

写法一(直观易懂,适合固定4行场景)

sed '3p;4p;1p;2p;1,4d' input.fasta

简单说明:先按3、4、1、2的顺序打印对应行,再删除原文件的1-4行,最终输出就是互换后的内容。

写法二(利用sed的缓存空间机制)

sed '1{h;d}; 2{H;d}; 3p; 4G' input.fasta

简单说明:

  • 第1行:存入缓存空间并跳过打印
  • 第2行:追加到缓存空间并跳过打印
  • 第3行:直接打印
  • 第4行:将缓存空间的内容(原1、2行)追加到当前行后打印,最终输出3→4→1→2的顺序

内容的提问来源于stack exchange,提问作者SaltedPork

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:25:32