我有多个目录中包含 ID 和计数的计数文件(对于每个加入 SRRXXXXX)。我想使用 bash 循环在每个文件中添加标头“gene_id”和 SRRabcdXXX。
目录结构如下:
SRRabcd
count.txt
SRRefgh
count.txt
我的文件
gene1 194
gene2 40
我在做什么
#!/bin/bash
for dir in /home/path/to/dir/SRR*/
do
sed -i '1s/^/gene_id\t"${dir}"\n/' "$dir"/count.txt
done
我的输出
gene_id "${dir}"
gene1 194
gene2 40
我想要的输出(对于单个文件)
gene_id SRRabcdef
gene1 194
gene2 40
将整个
sed
脚本用双引号括起来,以允许扩展 bash
变量 dir
,例如:
sed "1s/^/gene_id\t${dir}\n/" "$dir"/count.txt
^ ^
样本数据:
$ head SRR*/count.txt
==> SRRabcd/count.txt <==
gene1 194
gene2 40
==> SRRefgh/count.txt <==
gene1 395
gene2 17
修改后的脚本:
for dir in SRR*
do
echo "########## $dir"
sed "1s/^/gene_id\t${dir}\n/" "$dir"/count.txt
done
这会生成:
########## SRRabcd
gene_id SRRabcd
gene1 194
gene2 40
########## SRRefgh
gene_id SRRefgh
gene1 395
gene2 17
一旦确认结果正确,您就可以添加
-i
标志。