다음과 같이 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