#!/bin/bash
# 检查是否提供了文件名
if [ $# -eq 0 ]; then
echo "Usage: $0 <fasta_file>"
exit 1
fi
# 读取FASTA文件名
fasta_file=$1
# 检查文件是否存在
if [ ! -f "$fasta_file" ]; then
echo "File not found!"
exit 1
fi
# 初始化变量
seq_name=""
seq=""
# 处理FASTA文件
while read -r line; do
if [[ $line == ">"* ]]; then
# 如果是新的序列名称,处理前一个序列
if [ -n "$seq_name" ]; then
gc_count=$(echo "$seq" | grep -o "[GCgc]" | wc -l)
total_count=$(echo -n "$seq" | wc -c)
gc_content=$(echo "scale=2; $gc_count * 100 / $total_count" | bc)
echo "$seq_name GC Content: $gc_content%"
fi
# 设置新的序列名称和清空序列
seq_name=$line
seq=""
else
# 累加序列
seq+=$line
fi
done < "$fasta_file"
# 处理最后一个序列
if [ -n "$seq_name" ]; then
gc_count=$(echo "$seq" | grep -o "[GCgc]" | wc -l)
total_count=$(echo -n "$seq" | wc -c)
gc_content=$(echo "scale=2; $gc_count * 100 / $total_count" | bc)
echo "$seq_name GC Content: $gc_content%"
fi
用法:
./gc_content.sh your_fasta_file.fasta
输出:
>seq1 GC Content: 54.17%
>seq2 GC Content: 45.83%