首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在shell中的单个文件中的多个文件中写入for循环的结果

在shell中的单个文件中的多个文件中写入for循环的结果
EN

Stack Overflow用户
提问于 2022-03-19 21:31:26
回答 2查看 127关注 0票数 1

我刚开始使用shell脚本(bash/awk.等等),所以请原谅我的愚蠢问题。我知道,对你们中的许多人来说,这太容易了

我有多个像这样的文件:

代码语言:javascript
复制
file1.bam, ...., file1000.bam

对于我在终端中写的每一个文件,我都会使用以下命令,并以一个数字作为结果

代码语言:javascript
复制
samtools view -c -F 4 file1.bam 
9
# and 
samtools view -c -f 4 file1.bam 
2

现在,我正在努力地将所有for循环的结果放在一个类似于下面的文本文件中

代码语言:javascript
复制
file1         9      2
...        ...      ...
file1000    100     50

到目前为止我已经写了

代码语言:javascript
复制
for each in .bam
do
 echo ${each}
 samtools view -c -F 4 ${each}.bam 
 samtools view -c -f 4 ${each}.bam 
done

编辑:输出

代码语言:javascript
复制
samtools view -c -F 4 file1.bam | hexdump -C

00000000  39 0a                                             |9.|
00000002
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-19 21:44:26

我建议使用bash

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2022-03-19 22:28:50

考虑在循环之外进行最后输出的收集和生产:

代码语言:javascript
复制
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]}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71542259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档