如何一次返回一个 grep 结果

如何一次返回一个 grep 结果

我有一个 csv 文件,列出了两个物种(例如物种 A 和 B)之间的直系同源基因。我正在尝试使用 grep 来查找 B 中特定 A 基因的直系同源物。

例如,我想要 A 基因 AT1G01070 在 B 中的直系同源物

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 基因作为参数。

相关内容