如何从多个 grep 中获取每个模式的单独结果

TCF*_*CDG 5 grep

我想在 100 个文件中搜索 14 种不同的模式。在我尝试的那一刻

cat s_3_2_*_qseq.txt | grep  -c  'pattern1\|pattern2\|pattern3\|pattern4\|pattern5\|...pattern14'
Run Code Online (Sandbox Code Playgroud)

这给了我每个文件中所有模式的编号

    s_3_3_001_qseq.txt:12
    s_3_3_002_qseq.txt:15
    .

    s_3_3_0068_qseq.txt:5
Run Code Online (Sandbox Code Playgroud)

我有兴趣单独查看每个模式的结果如下:

file                  pattern1   pattern2   .....   pattern14
s_3_3_001_qseq.txt:    0         2                  5
s_3_3_002_qseq.txt:    7         1                  3
.
.
s_3_3_0068_qseq.txt:   1         2                  1
Run Code Online (Sandbox Code Playgroud)

知道我该怎么做,unix、perl 或 python 解决方案会很好。

Mel*_*lan 0

PATTERNS=(dummy pattern1 pattern2 ... pattern14) ; dummy to occupy index zero
for file in /path/to/my/files/*
do
  for p in 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  printf ${file}"\t"
  do
    c=$(grep -c PATTERNS[${p}] ${file}) # depending on the nature of your pattern you may need quotes around it
    printf ${c}"\t"
  done
  echo
done
Run Code Online (Sandbox Code Playgroud)

像这样的东西可能会起作用(未检查语法,如果您决定使用它,请小心)