1つのファイルと他の複数のファイルの文字列を解析する方法は?

1つのファイルと他の複数のファイルの文字列を解析する方法は?

次のように、7253.txtにリストされている文字列のリストをgrepしようとしています。

rs11078372 
rs1124961 
rs11651880 
rs11659047 
rs1736209

使用:

grep -o -f 7253.txt *.logistic > result.txt

複数のファイルから *.logistic。これらのファイルはサイズが大きく、このgrepコマンドは時間がかかります。

.logistic ファイルは次のとおりです。

#CHROM  POS  ID REF ALT A1  TEST    OBS_CT  OR  LOG(OR)_SE  Z_STAT  P
17  16933404    rs11867934  T   C   T   ADD 32232   0.974082    0.0279353   -0.940008   0.347213

したがって、7253.txtの文字列は.logisticのID列と一致します。そして正確に一致する必要があります。

これらの* .logisticファイルを解析するより効率的な方法はありますか?

このファイルは22個です。名前は次のとおりです。Finchr1.pheno.glm.logistic、Finchr2.pheno.glm.logistic...

result.txtの.logisticからIDとP列(3列と12列)を抽出できればいいと思います。

.logisticからIDのみを抽出するには、次のようにします。

awk 'FNR!=1 {print $3}' *.logistic | grep -o -w -F -f 7253.txt > result.txt

しかし、.logisticから3番目と12番目の列IDとP列を抽出する方法は?

ありがとう、アンナ

答え1

おそらくあなたは欲しいでしょう

awk '
    NR == FNR {ids[$1]=1; next}
    $3 in ids {print $3, $12}
' 7253.txt *.logistic > result.txt

関連情報