別のファイルの単語リストを含む1つのファイルの行を抽出するには? [コピー]

別のファイルの単語リストを含む1つのファイルの行を抽出するには? [コピー]

このサイトの提案をすべて試しましたが、結果が不完全です。

ファイル1は、ファイル2から検索し、必要な情報を含む行セット全体を抽出したいタンパク質のリストを示しています。

Q14157
Q14444
P23246
Q96EP5
Q9UN86
Q14011
Q7Z739
Q9Y383
Q96I24
Q9NP61
P29558
P51116
P00441
Q2TBT7
Q9NZI8

ファイル2には、ファイル1のリストから抽出する情報が含まれています(このセクションはここに不完全に貼り付けられています)。

P21796  260 Phosphoserine   S   1
P21796  266 N6-acetyllysine K   4
P21796  266 Ubiquitination  K   3
P21796  274 N6-acetyllysine K   1
P21796  274 Ubiquitination  K   3
P18848  45  Sumoylation K   1
P18848  45  Ubiquitination  K   2
P18848  53  Sumoylation K   1
P18848  55  Ubiquitination  K   2
P18848  69  Phosphoserine   S   4
P18848  75  Ubiquitination  K   2
P18848  88  Ubiquitination  K   2
P18848  107 Phosphothreonine    T   1
P18848  114 Phosphothreonine    T   1
P18848  115 Phosphothreonine    T   1
P18848  119 Phosphothreonine    T   1
P18848  213 Phosphothreonine    T   1
P18848  215 Phosphoserine   S   1
P18848  219 Phosphoserine   S   4
P18848  224 Phosphoserine   S   3
P18848  231 Phosphoserine   S   1
P18848  235 Phosphoserine   S   1
P18848  245 Phosphoserine   S   3
P18848  248 Phosphoserine   S   3
P18848  267 Sumoylation K   1
P18848  277 Ubiquitination  K   1
P18848  293 Phosphothreonine    T   1
P18848  295 Phosphotyrosine Y   1
P18848  335 Ubiquitination  K   2
P18848  343 N6-acetyllysine K   1
P18848  348 N6-acetyllysine K   1
P23246  7   Dimethylation   R   1
P23246  7   Omega-N-methylarginine  R   2
P23246  8   Phosphoserine   S   3
P23246  9   Asymmetric dimethylarginine R   1
P23246  9   Dimethylation   R   1
P23246  9   Methylation R   1
P23246  9   Omega-N-methylarginine  R   3
P23246  19  Dimethylation   R   1
P23246  19  Methylation R   1
P23246  19  Omega-N-methylarginine  R   2
P23246  25  Dimethylation   R   1
P23246  25  Methylation R   1
P23246  25  Omega-N-methylarginine  R   2
P23246  32  Dimethylation   R   1
P23246  32  Methylation R   1
P23246  33  Phosphoserine   S   8
Q14011  17  Phosphothreonine    T   1
Q14011  21  Phosphoserine   S   1
Q14011  33  Phosphoserine   S   1
Q14011  47  Methylation R   1
Q14011  71  Phosphoserine   S   3
Q14011  84  Ubiquitination  K   2
Q14011  94  Dimethylation   R   1

答え1

grep -f file1 file2file2すべてのパターンを検索しfile1、一致する行を印刷する必要があります。 (ただし、どこでも一致する場合は、最初の列の後にタンパク質名が表示されると偽の肯定が発生する可能性があります。)固定文字列を一致させるには-F

答え2

この問題を解決する1つの方法は、file1のすべての正規表現文字をエスケープし、次のステップで両端で文字列を制限することです。手順の順序が重要であることに注意してください。

hybrid regexこれは、一致する実際の文字列がすべての正規表現BRE文字をエスケープしてリテラル文字列になり、周囲に正規表現文字を配置して一致を最初のフィールドに制限する方法と言えます。

$ < file1 \
    sed -e '
      s:[[\.*^$]:\\&:g
      s/.*/^&[[:blank:]]/
'  | grep -f - file2

*ステップ1 => BRE式を使用して、file1の文字列をgrepに対応する一般的な文字列としてレンダリングします。

*ステップ2 =>上のエスケープ文字列の左側を行の先頭に制限し、右側を空白文字に制限します。

  • 注子供:BRE正規表現の文字をエスケープしています。だからgrep電話をかけないでください-E

答え3

次のawkコマンドを使用できます

awk 'NR==FNR{a[$1];next}($1 in a){print $0}' file1 file2

関連情報