fasta文件每条序列按照序列长短命名并排序,支持自定义字符串rename_length.sh.V2

#!/bin/bash

# 输入文件名
input_file="$1"
# 输出文件名
output_file="$2"
# 前缀字符
prefix="$3"

# 初始化变量
seq_name=""
seq=""

# 创建一个临时文件保存序列信息
temp_seq_file=$(mktemp)

# 读取输入FASTA文件并提取序列信息
while read -r line; do
    # 判断是否是序列名称行
    if [[ $line == ">"* ]]; then
        # 如果之前有序列,保存其信息
        if [[ -n $seq_name ]]; then
            seq_length=${#seq}
            echo "$seq_name,$seq_length,$seq" >> "$temp_seq_file"
        fi
        # 重置变量
        seq_name=$line
        seq=""
    else
        # 累加序列内容
        seq+=$line
    fi
done < "$input_file"

# 处理最后一条序列
if [[ -n $seq_name ]]; then
    seq_length=${#seq}
    echo "$seq_name,$seq_length,$seq" >> "$temp_seq_file"
fi

# 创建一个临时文件保存排序后的FASTA内容
temp_sorted_file=$(mktemp)

# 按照序列长度排序并重新编号
sort -t ',' -k2,2nr "$temp_seq_file" | awk -F ',' -v prefix="$prefix" '{print ">" prefix NR "\n" $3}' > "$temp_sorted_file"

# 将临时文件重命名为输出文件
mv "$temp_sorted_file" "$output_file"

# 删除临时文件
rm "$temp_seq_file"

echo "FASTA文件处理完成,输出文件为: $output_file"

用法: ./rename_fasta_with_rank.sh input.fasta output.fasta PREFIX_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终是蝶衣梦晓楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值