하나의 파일과 다른 여러 파일의 문자열을 구문 분석하는 방법은 무엇입니까?

하나의 파일과 다른 여러 파일의 문자열을 구문 분석하는 방법은 무엇입니까?

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

관련 정보