我是 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
uj5u.com熱心網友回復:
我建議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
uj5u.com熱心網友回復:
考慮在回圈之外收集和生成最終輸出:
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://www.uj5u.com/caozuo/447758.html
