shell script에서 Grep 사용법

조회수 413회

안녕하세요.

Linux에서 실행될 수 있도록 간단한 shell script를 작성중인데요. grep 사용에 문제가 있어서 질문 드립니다.

먼저 9bp_cases.txt 파일은

`AAAAAAAAA

AAAAAAAAG

AAAAAAAAC

AAAAAAAAT

AAAAAAAGA

AAAAAAAGG

AAAAAAAGC

...`과 같이 A,G,C,T의 조합으로 이루어진 9자리 문자이구요. 각 행에 있는 9자리 조합이 B.txt에서 몇 번 존재하는지 찾으려고 합니다.

//#!/bin/bash

file=/Dataset/4.synTF/2.Sequence/9bp_cases.txt

# CSV 파일이 존재하지 않으면 종료

if [ ! -f "$file" ]; then
    echo "CSV 파일이 존재하지 않습니다: $file" >&2
    exit 1 
fi

cat 9bp_cases.txt | while read line;
do
    echo $line 
    grep -i -o $line B.txt | wc -w
done 

Blockquote

//AAAAAAAAA
0
AAAAAAAAG
0
AAAAAAAAC
0
AAAAAAAAT
0
AAAAAAAGA
0

다음과 같이 출력되는 문제가 있습니다.

그냥 터미널에 입력시 정상적으로 카운팅이 됩니다.

grep -i -o AAAAAAAA B.txt | wc -w
33410

아마 grep 뒤에 있는 $line이 제대로 된 문자로 인식이 안되는 것 같은데 도와주신다면 정말 감사하겠습니다.

  • 저는 같은 코드로 실행시 정상적으로 작동이 되는데.. 혹시 "$line"등으로 감싸주거나 | wc -w 등을 통해 디버깅을 하는건 어떨까요? 추가적으로 스크립트 실행 위치 확인 부탁드립니다 Eveheeero 2022.5.9 02:19

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)