2つのテキストファイルを比較し、file2と他の行の一致する行を抽出します。

2つのテキストファイルを比較し、file2と他の行の一致する行を抽出します。

あまりにも長い間これを遊んでgrep、Join、awkを試しましたが、パラメータを正しく取得できませんでした。コマンドを正しく実行する必要があります。

2つのテキストファイルがあります。

猫ファイル1

@ABC:11:ABC:1:1111:1111:1111
@ABC:22:ABC:1:1111:4444:4444


猫ファイル2

@ABC:11:ABC:1:1111:1111:1111 1:N:0:TCCCGCGC+AGGCGGGG
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:11:ABC:1:1111:2222:2222 1:N:0:TCCCGCGC+AGGCGGGG
AGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:22:ABC:1:1111:3333:3333 1:N:0:TCCCGCGC+AGGCGGGG
AGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:22:ABC:1:1111:4444:4444 1:N:0:TCCCGCGC+AGGCGGGG
TTTTTTTTTTTTTGGGGGGGGGGGGGGGGTTTTTTTTTTTTTTTTTTTGGGGGGGGGGGGGGGGGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


私は2つのことをしたい:

出力1)file1に基づいて、文字列と2つの追加文字列を含むすべての行を抽出します。
出力2)file1 に基づいて、次の条件に一致するすべての行を抽出します。欲しくない文字列と2つの追加行が含まれていますが、@..で始まる行だけを一致させようとする必要があります。



出力例1):

猫出力1

@ABC:11:ABC:1:1111:1111:1111 1:N:0:TCCCGCGC+AGGCGGGG
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:22:ABC:1:1111:4444:4444 1:N:0:TCCCGCGC+AGGCGGGG
TTTTTTTTTTTTTGGGGGGGGGGGGGGGGTTTTTTTTTTTTTTTTTTTGGGGGGGGGGGGGGGGGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


出力例2)

猫出力2

@ABC:11:ABC:1:1111:2222:2222 1:N:0:TCCCGCGC+AGGCGGGG
AGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:22:ABC:1:1111:3333:3333 1:N:0:TCCCGCGC+AGGCGGGG
AGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF



(Perlを使用しないでください)

答え1

あなたが表示して要求するのは、grep fastqファイルから与えられた読み取りセットです。ホイールを再発明するのではなく、既存のツールを使用することをお勧めします。seqkit grepそれのために。

それでも「bashのみ」のバリエーションは次のとおりです。

4つの連続した行が1つの読み取りに属します。したがって、すべての項目をタブで区切って1行に配置し、IDを検索してタブを新しい行に戻すことができます。

$ cat file2.fq|paste - - - -|grep -f file1.txt|tr "\t" "\n"

または、2番目の出力にはinvertパラメータを使用します。grep

$ cat file2.fq|paste - - - -|grep -v -f file1.txt|tr "\t" "\n

関連情報