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

如何为Bash循环添加条件:仅处理第2、4行不同的fasta文件

为Bash循环添加Fasta文件过滤条件

需求概述

原有的Bash循环会批量处理所有.fasta文件,现在需要添加判断逻辑:仅当目标fasta文件(固定为4行)的第2行与第4行序列不重复时,才执行parallel调用Python脚本的操作。

原循环命令:

for i in *.fasta ; do
   parallel -j 10 python script.py $i > $i.out
done

解决方案

方法1:直接对比目标行内容

通过sed提取第2行和第4行,直接判断两行内容是否不同,逻辑直观高效:

for i in *.fasta; do
    # 提取文件的第2行和第4行内容
    line2=$(sed -n '2p' "$i")
    line4=$(sed -n '4p' "$i")
    # 仅当两行内容不相等时执行后续命令
    if [ "$line2" != "$line4" ]; then
        parallel -j 10 python script.py "$i" > "$i.out"
    fi
done

方法2:通过去重行数判断

提取第2、4行后去重,统计剩余行数是否为2(说明两行无重复),适合需要扩展判断多行重复的场景:

for i in *.fasta; do
    # 提取目标行并去重,统计剩余行数
    unique_line_count=$(sed -n '2p;4p' "$i" | uniq | wc -l)
    # 行数为2则说明两行不重复
    if [ "$unique_line_count" -eq 2 ]; then
        parallel -j 10 python script.py "$i" > "$i.out"
    fi
done

补充说明

  • 两种方法都仅针对需要判断的行操作,比你之前尝试的sort file.fasta | uniq -c更高效,无需处理整个文件。
  • 给变量$i添加双引号"$i",可避免文件名包含空格或特殊字符时出现执行错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:15:57