複数のファイルを参照ファイルと比較し、一致した場合に印刷します。

複数のファイルを参照ファイルと比較し、一致した場合に印刷します。

次のファイルがいくつかあります。

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

関連情報