grep結果を一度に1つずつ返す方法

grep結果を一度に1つずつ返す方法

2つの種(例えば、種AとB)の間の異種遺伝子をリストするcsvファイルがあります。 Bで特定のA遺伝子のオソログを見つけるためにgrepを使用しようとしています。

例えば、私はBのA遺伝子AT1G01070のオソログが欲しい。

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

私は3つのB遺伝子についてすぐに次のような結果を得ました。

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

ただし、一度に1つの遺伝子/次のコマンド/プログラムが必要です。どうすればいいですか?

答え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コマンドに一度に1つの引数を提供するために使用されます。awk

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

commandtofollowB遺伝子は現在、一度に1つずつ引数として使用されます。

関連情報