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

如何通过Bash循环为count.txt添加表头,第二列为目录名称

批量为count.txt添加对应目录名表头方案

问题背景

存在多个以SRRXXXXX命名的目录,每个目录下都有一个count.txt文件,文件内容为基因ID与对应计数:

gene1 194
gene2 40

目录结构示例:

SRRabcd
  count.txt
SRRefgh
  count.txt

需要为每个count.txt的首行添加表头:第一列为固定的gene_id,第二列为该文件所在的目录名称(如SRRabcd)。

原脚本问题分析

原脚本中sed命令使用单引号包裹替换字符串,导致Bash无法解析${dir}变量,同时错误使用了"转义符,最终输出表头为gene_id "${dir}"而非实际目录名。

修正后的脚本

#!/bin/bash
for dir in /home/path/to/dir/SRR*/
do
    # 提取目录的纯名称(去除路径和末尾斜杠)
    dir_name=$(basename "$dir")
    # 用双引号包裹sed替换字符串,确保变量被解析
    sed -i "1s/^/gene_id\t${dir_name}\n/" "${dir}/count.txt"
done

关键说明

  • 变量解析:Bash中双引号会解析内部变量,单引号则完全保留字符串原样,因此将sed的替换部分改为双引号包裹,才能让${dir_name}被替换为实际目录名。
  • 目录名提取:basename "$dir"用于从带路径的目录名(如/home/xxx/SRRabcd/)中提取纯目录名称SRRabcd。
  • 格式修正:去掉原脚本中的"转义符,直接使用制表符\t分隔表头两列,保证格式正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:55:05