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

Bash脚本匹配文件前缀迁移指定字段无输出问题排查

解决Bash脚本无输出问题:合并Oncomine文件指定列

首先咱们来拆解下你现有脚本没输出的核心原因:你的awk逻辑是用file1的第5、6、7列作为键存储整行,再试图匹配file2的第一列,但file2的第一列是Controls:,和file1里的Total_Targets或2353完全不匹配,自然找不到对应项,所以没有任何输出。

接下来是针对性的修正方案,我们需要实现:

  1. 从file1中提取指定列的表头和数据
  2. 把这些内容插入到file2开头,加上Quality metrics:标题
  3. 支持通过文件前缀批量匹配处理(毕竟你要处理的是一组前缀相同的文件)

单文件处理的修正脚本

针对单个前缀(比如123_Last-First),可以用这个awk命令:

prefix="123_Last-First"
file1="/home/cmccabe/oncomine/250x/${prefix}_250x.txt"
file2="/home/cmccabe/oncomine/report/${prefix}_oca.txt"
output="/home/cmccabe/oncomine/report/final/${prefix}_oncomine.txt"

awk '
# 处理第一个文件(file1)
FNR==NR {
    if (FNR == 1) {
        # 提取表头的第5-7列
        header = $5 "\t" $6 "\t" $7
    } else {
        # 提取数据行的第5-7列
        data = $5 "\t" $6 "\t" $7
    }
    next
}
# 处理第二个文件(file2)
BEGIN {
    print "Quality metrics:"
    print header
    print data
}
{ print }
' "$file1" "$file2" > "$output"

批量处理所有前缀匹配的文件

如果你有多个前缀的文件需要处理,可以用循环遍历250x目录下的文件,自动匹配对应report目录的文件:

# 先创建输出目录(如果不存在)
mkdir -p /home/cmccabe/oncomine/report/final

# 遍历250x目录下所有_250x.txt后缀的文件
for file1 in /home/cmccabe/oncomine/250x/*_250x.txt; do
    # 提取文件前缀:去掉末尾的_250x.txt
    prefix=$(basename "$file1" _250x.txt)
    # 对应report目录下的oca文件路径
    file2="/home/cmccabe/oncomine/report/${prefix}_oca.txt"
    # 最终输出文件路径
    output="/home/cmccabe/oncomine/report/final/${prefix}_oncomine.txt"
    
    # 先检查对应file2是否存在,避免报错
    if [ -f "$file2" ]; then
        awk '
        FNR==NR {
            if (FNR == 1) {
                header = $5 "\t" $6 "\t" $7
            } else {
                data = $5 "\t" $6 "\t" $7
            }
            next
        }
        BEGIN {
            print "Quality metrics:"
            print header
            print data
        }
        { print }
        ' "$file1" "$file2" > "$output"
        echo "处理完成:$output"
    else
        echo "警告:未找到对应文件 $file2"
    fi
done

验证输出效果

运行脚本后,你会得到完全符合预期的输出文件,比如123_Last-First_oncomine.txt:

Quality metrics:
Total_Targets Targets_less_than250x Percent_more_than250x
2353 1 99.9575
Controls: 4 expression controls detected

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:11:36