2つの遺伝子データセットがあります。ファイル1はtxtファイルで、対応する染色体IDはすべてファイル2にも表示されます。ファイル2は、ファイル1よりも大きく、一意の染色体IDを持つcsvファイルです。ファイル1と比較して一意の染色体IDを持つファイル2の行のみを抽出するにはどうすればよいですか?
たとえば、私のデータは次のようになります。
ファイル1(染色体位置は実際に私の125番目の列です...):
Gene pval ... Chromosome position ID
ACE 0.002 ... 01:3290834_CT_C_1
NOS 0.01 ... 03:3304593_GA_G_1
BRCA 0.004 . ... 06:6265733_GA_G_1
CYP3 0.34 ... 09:9433933_GA_G_1
ファイル2(染色体位置が最初の列):
Chromosome position ID Gene pval
01:1243933_GA_G_1 ACE 0.002
03:3304593_GA_G_1 NOS 0.01
06:6265733_GA_G_1 BRCA 0.004
09:9433933_GA_G_1 CYP3 0.34
染色体位置IDのみに基づいてファイル2にのみ表示される出力の唯一の行は次のとおりです。
Chromosome position ID Gene pval
01:1243933_GA_G_1 ACE 0.002
uniq
私はこの出力を使用して取得しようとしましたが、sort
これまでは複数のテキストファイルを使用するオンライン例だけを見つけましたが、代わりに一意のID行ではなく一致するID行を使用したいと思います。この方法も試しましたが、grep
ファイルサイズが大きく、コマンドは終了しました。
答え1
他のスレッドの解決策(シェル拡張ファイル[12]を除く):
awk ' FNR==NR {P[$125]; next} FNR==1 || !($1 in P)' file1 file2
Chromosome position ID Gene pval
01:1243933_GA_G_1 ACE 0.002