다음과 같은 파일이 있습니다.
#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