如何使用存储在变量中的字符串在行的开头进行 grep

如何使用存储在变量中的字符串在行的开头进行 grep

我有一个 shell 脚本;说出test.sh以下内容:

for j in *_seqs.txt; do  

    while read line; do

    count_of_occurences=$(grep "^$line" $j)
    echo $count_of_occurences
    done < $1

done

以及同一文件夹中的几个文件;说

1_seqs.txt
2_seqs.txt
3_seqs.txt
4_seqs.txt
5_seqs.txt

say 的内容1_seqs.txt可能看起来像

AAA0030309
3300AAA009
00AAA33030
AAA0022033

我有另一个文件,alphabets.txt内容如下

AAA
BBB
CCC

我想使用 shell 脚本查看alphabets.txt所有内容。我想查找 say 是否出现在 say 行的开头,依此类推。*_seqs.txttest.shAAA1_seqs.txt

当我像这样运行脚本时我无法这样做

sh test.sh alphabets.txt

由于某种原因,当字符串存储在内的grep变量中时,无法查看开头。$linetest.sh

我的脚本输出应该是

AAA0030309
AAA0022033

答案1

你的脚本几乎已经达到了你想要的效果。您不需要grep捕获,这只会使打印变得复杂:

#!/bin/bash

for j in *_seqs.txt; do  
  while read line; do
      grep "^$line" "$j"
  done < "$1"
done

相关内容