grep 결과를 한 번에 하나씩 반환하는 방법

grep 결과를 한 번에 하나씩 반환하는 방법

두 종(예: 종 A와 B) 사이의 이종 유전자를 나열하는 csv 파일이 있습니다. B 에서 특정 A 유전자의 오솔로그를 찾기 위해 grep을 사용하려고 합니다.

예를 들어, 나는 B에서 A 유전자 AT1G01070의 오솔로그를 원합니다.

grep "AT1G01070" table.csv | cut -d"," -f 2,3,4 

나는 세 가지 B 유전자에 대해 즉시 다음과 같은 결과를 얻었습니다.

"Csa17g001550.1,Csa14g002110.1,Csa03g002170.1"

그러나 한 번에 하나의 유전자/다음 명령/프로그램이 필요합니다. 어떻게 해야 하나요?

답변1

스크립트의 이 부분을 보고 최소한 이해할 수 있어서 반갑습니다.어떻게다음 단계에 정보를 제공합니다.

다음 단계에서 표준 입력을 처리하고 한 번에 한 줄씩 읽을 수 있다면 다음이 작동할 수 있습니다.

grep "AT1G01070" table.csv | cut -d"," -f 2,3,4 | tr ',' '\n' | next_step

아니면 다음과 같은 것일 수도 있습니다.

grep "AT1G01070" table.csv | cut -d"," -f 2,3,4 | tr ',' '\n' | while read a
do
   next_step $a
done

답변2

줄 바꿈으로 구분하여 xargs명령에 한 번에 하나의 인수를 제공하는 데 사용됩니다 .awk

awk -F',' '/AT1G01070/ {print $2"\n"$3"\n"$4 }' table.csv |\
xargs -L 1 commandtofollow

commandtofollowB 유전자는 이제 한 번에 하나씩 인수로 사용됩니다.

관련 정보