두 종(예: 종 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
commandtofollow
B 유전자는 이제 한 번에 하나씩 인수로 사용됩니다.