在 shell 中的单个文件中写入多个文件中 for 循环的结果
Write the outcome of a for loop in multiple files in a single file in shell
我是 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
我建议 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
考虑在循环外收集和生成最终输出:
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]=[=10=]} NR%3==0{print a[1], a[2], a[0]}'
我是 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
我建议 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
考虑在循环外收集和生成最终输出:
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]=[=10=]} NR%3==0{print a[1], a[2], a[0]}'