다음과 같은 파일이 여러 개 있습니다.
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
a
b1
파일 등의 파일에서 고정된 문자열을 찾습니다 . b2
or 옵션은 일치하는 각 파일의 파일 이름 출력을 억제합니다.b3
-h
--no-filename