変数に格納された文字列を使用して行の先頭をキャッチする方法

変数に格納された文字列を使用して行の先頭をキャッチする方法

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

シェルスクリプトを使って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

関連情報