4つの文字列を含まないファイルから行を抽出するには?

4つの文字列を含まないファイルから行を抽出するには?

次のファイルがあります。

#CHROM  POS ID  REF ALT A1  A1_FREQ FIRTH?  TEST    OBS_CT  BETA    SE  Z_OR_F_STAT P   ERRCODE
1   740284  rs61770167  C   T   T   0.0031746   N   ADD 21420   NA  NA  NA  NA  .
1   740284  rs61770167  C   T   T   0.0031746   N   DOMDEV  21420   NA  NA  NA  NA  RANK_DEFICIEN
1   740284  rs61770167  C   T   T   0.0031746   N   GENO_2DF    21420   NA  NA  NA  NA  CORR_TOO_HIGH
1   754433  rs150578204 G   A   A   0.00400223  N   ADD 21488   NA  NA  NA  NA  CORR_TOO_HIGH
1   754433  rs150578204 G   A   A   0.00400223  N   DOMDEV  21488   NA  NA  NA  NA  VIF_TOO_HIGH
1   754433  rs150578204 G   A   A   0.00400223  N   GENO_2DF    21488   NA  NA  NA  NA  .
1   754458  rs142682604 G   T   T   0.00397897  N   ADD 21488   NA  NA  NA  NA  CORR_TOO_HIGH
1   754458  rs142682604 G   T   T   0.00397897  N   DOMDEV  21488   NA  NA  NA  NA  CORR_TOO_HIGH
1   754458  rs142682604 G   T   T   0.00397897  N   GENO_2DF    21488   NA  NA  NA  NA  UNFINISHED

CORR_TOO_HIGH、VIF_TOO_HIGH、RANK_DEFICIENT、UNFINISHEDの4つの文字列がない行のみを抽出する方法です。つまり、列 15 には「.」のみを含めることができます。他の文字列の代わりに。

ファイルはスペースで区切られます。

1つの文字列でこれを行う方法を知っていますが、複数の文字列で行う方法はわかりません。

grep -v 'CORR_TOO_HIGH' nephropathy_chr1.pheno.glm.logistic.hybrid > file.out

この例の予想出力は次のとおりです。

#CHROM  POS ID  REF ALT A1  A1_FREQ FIRTH?  TEST    OBS_CT  BETA    SE  Z_OR_F_STAT P   ERRCODE
1   740284  rs61770167  C   T   T   0.0031746   N   ADD 21420   NA  NA  NA  NA  .
1   754433  rs150578204 G   A   A   0.00400223  N   GENO_2DF    21488   NA  NA  NA  NA  .

ベストアンサー1

awk '$15=="."||NR<2' file
  • NR<2タイトル印刷
  • $15=="."15列に1行ずつろ過して印刷します.

おすすめ記事