변수에 저장된 문자열을 사용하여 줄의 시작 부분을 잡는 방법

변수에 저장된 문자열을 사용하여 줄의 시작 부분을 잡는 방법

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

관련 정보