여러 파일을 참조 파일과 비교하고 일치하면 인쇄합니다.

여러 파일을 참조 파일과 비교하고 일치하면 인쇄합니다.

다음과 같은 파일이 여러 개 있습니다.

b
alternate_ids rsid chromosome position alleleA alleleB index average_maximum_posterior_call info cohort_1_AA cohort_1_AB cohort_1_BB cohort_1_NULL all_AA all_AB all_BB all_NULL all_total all_maf missing_data_proportion frequentist_add_pvalue frequentist_add_info frequentist_add_beta_1 frequentist_add_se_1 comment
--- rs148087467 NA 60523 T G 1 0.999401 0.266624 7261.6 5.39417 0.00299072 0 7261.6 5.39417 0.00299072 0 7267 0.000371553 0 0.584342 0.247422 -0.473097 0.86481 NA
--- rs187110906 NA 60969 C A 2 0.995453 0.23508 7228.62 38.2204 0.138092 0.0169067 7228.62 38.2204 0.138092 0.0169067 7267 0.00264873 1.16325e-06 0.803757 0.281439 0.0754077 0

다른 파일과 일치시켜야 합니다.

a
rs586178
rs79598313
rs72634501
rs191448950
rs9988450
rs11207995

alternate_ids일치 하는 경우 a일치하는 줄을 새 파일에 인쇄합니다.

나는 들었다

$ awk -F'|' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' file2 file1

하지만 2개의 파일만 비교합니다. 모든 파일을 실행하려면 루프를 만들어야 합니까?

답변1

그러면 파일이 구문 분석 a되고 줄 중 하나가 파일에 있으면 b해당 줄이 표시됩니다.

for i in $(<a); do grep $i b; done

a키를 포함하는 파일 유형과 유형의 파일이 여러 개 있는 경우 파일 이름을 반복하는 변수로 b바꾸면 됩니다 .b

답변2

귀하의 질문을 올바르게 해석하면 다음과 같이 원하는 결과를 얻을 수 있습니다.

grep --no-filename --fixed-strings --file a b1 b2 b3 ... bN

또는 짧은 옵션을 사용하세요.

grep -h -F -f a b1 b2 b3 ... bN

ab1파일 등의 파일에서 고정된 문자열을 찾습니다 . b2or 옵션은 일치하는 각 파일의 파일 이름 출력을 억제합니다.b3-h--no-filename

관련 정보