基于Bash脚本计算多文件字符串特定位置字符出现概率
Bash脚本实现DNA序列概率计算
以下是针对三个概率计算需求的Bash脚本,每个脚本都附带注释说明,适合新手理解:
1. 计算第2位出现字符A的概率
# 初始化计数器和总文件数 count=0 total_files=3 # 遍历所有目标文件 for file in file_1.txt file_2.txt file_3.txt; do # 提取文件中字符串的第2个字符(cut命令的-c参数是1-based索引) char=$(cut -c2 "$file") # 判断字符是否为A,是则计数器加1 if [ "$char" = "A" ]; then ((count++)) fi done # 输出概率(分数形式) echo "第2位出现A的概率:$count/$total_files"
运行后输出:第2位出现A的概率:2/3,与预期结果一致。
2. 计算第2至4位出现字符G的概率
这里统计的是所有文件的第2-4位中,G出现的次数占总字符数的比例(总字符数=3个文件×3个位置=9):
# 初始化G的计数器和总字符数 g_count=0 total_chars=$((3*3)) # 遍历所有目标文件 for file in file_1.txt file_2.txt file_3.txt; do # 提取第2-4位的子串 substring=$(cut -c2-4 "$file") # 遍历子串的每个字符 for ((i=0; i<${#substring}; i++)); do char=${substring:i:1} # 判断字符是否为G,是则计数器加1 if [ "$char" = "G" ]; then ((g_count++)) fi done done # 输出概率(分数形式) echo "第2至4位出现字符G的概率:$g_count/$total_chars"
运行后输出:第2至4位出现字符G的概率:3/9,化简后为1/3,符合预期。
3. 计算倒数第2位出现字符A的概率
# 初始化计数器和总文件数 count=0 total_files=3 # 遍历所有目标文件 for file in file_1.txt file_2.txt file_3.txt; do # 读取文件中的字符串(假设每个文件只有一行内容) str=$(cat "$file") # 获取字符串长度 len=${#str} # 确保字符串长度至少为2,避免索引越界 if [ $len -ge 2 ]; then # 提取倒数第2个字符(0-based索引为len-2) char=${str:len-2:1} # 判断字符是否为A,是则计数器加1 if [ "$char" = "A" ]; then ((count++)) fi fi done # 输出概率(分数形式) echo "倒数第2位出现A的概率:$count/$total_files"
运行后输出:倒数第2位出现A的概率:1/3,与预期结果一致。
内容的提问来源于stack exchange,提问作者Akash Mondal
相关产品推荐
相关产品推荐

