Сначала
скрипт OP, но в более удобной для читателя форме
#!/bin/bash
while read protein; do
echo $protein
grep -c $protein ./*.m8
done < test_just_IDs.txt
даст
$ ./test
AAR34355.1
./006D_id70.m8:0
./20D_id70.m8:0
./28D_id70.m8:0
AAR38850.1
./006D_id70.m8:0
./20D_id70.m8:2
./28D_id70.m8:4
A13520.1
./006D_id70.m8:0
./20D_id70.m8:0
./28D_id70.m8:0
И если мы немного изменим его
#!/bin/bash
printf "\t"; ls ./*.m8
while read protein; do
printf "$protein\t"
printf "%s\t\t" $(grep -hc $protein ./*.m8)
echo
done < test_just_IDs.txt
Это будет дать желаемый результат
$ ./test
./006D_id70.m8 ./20D_id70.m8 ./28D_id70.m8
AAR34355.1 0 0 0
AAR38850.1 0 2 4
A13520.1 0 0 0
И с чем-то вроде этого (для вкладки 8)
#!/bin/bash
line='%16s'; printf "\t\t"
for file in *.m8; { printf "| %s\t" $file; line+='+%15s'; }
while read protein; do
printf "\n$line\n" | tr " " "-"
printf "$protein\t"
printf "|\t%s\t" $(grep -ch $protein *.m8)
done < test_just_IDs.txt
Мы получим реальный вид таблицы
$ ./test
| 006D_id70.m8 | 20D_id70.m8 | 28D_id70.m8
----------------+---------------+---------------+---------------
AAR34355.1 | 0 | 0 | 0
----------------+---------------+---------------+---------------
AAR38850.1 | 0 | 2 | 4
----------------+---------------+---------------+---------------
A13520.1 | 0 | 0 | 0