我有一个这样的文件:
#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
如何仅提取没有这 4 个字符串中任何一个的行:CORR_TOO_HIGH、VIF_TOO_HIGH、RANK_DEFICIENT、UNFINISHED。或者换句话说,第 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