我刚开始使用shell脚本(bash/awk.等等),所以请原谅我的愚蠢问题。我知道,对你们中的许多人来说,这太容易了
我有多个像这样的文件:
file1.bam, ...., file1000.bam对于我在终端中写的每一个文件,我都会使用以下命令,并以一个数字作为结果
samtools view -c -F 4 file1.bam
9
# and
samtools view -c -f 4 file1.bam
2现在,我正在努力地将所有for循环的结果放在一个类似于下面的文本文件中
file1 9 2
... ... ...
file1000 100 50到目前为止我已经写了
for each in .bam
do
echo ${each}
samtools view -c -F 4 ${each}.bam
samtools view -c -f 4 ${each}.bam
done编辑:输出
samtools view -c -F 4 file1.bam | hexdump -C
00000000 39 0a |9.|
00000002发布于 2022-03-19 21:44:26
我建议使用bash
for each in *.bam; do
data1=$(samtools view -c -F 4 "${each}")
data2=$(samtools view -c -f 4 "${each}")
echo -e "${each}\t${data1}\t${data2}"
done发布于 2022-03-19 22:28:50
考虑在循环之外进行最后输出的收集和生产:
for each in *.bam; do
printf '%s\n' "${each%.*}"
samtools view -c -F 4 "$each"
samtools view -c -f 4 "$each"
done |
awk -v OFS='\t' '{a[NR%3]=$0} NR%3==0{print a[1], a[2], a[0]}'https://stackoverflow.com/questions/71542259
复制相似问题