次のファイルがいくつかあります。
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