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에는 "."만 포함될 수 있습니다. 다른 문자열 대신.

파일은 공백으로 구분됩니다.

하나의 문자열로 이 작업을 수행하는 방법을 알고 있지만 여러 문자열로 수행하는 방법은 모르겠습니다.

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열에 한 줄씩 걸러 인쇄합니다 ..

답변2

이와 같이:

awk '$15 !~ /^(CORR_TOO_HIGH|VIF_TOO_HIGH|RANK_DEFICIENT|UNFINISHED)$/' file

관련 정보