このサイトの提案をすべて試しましたが、結果が不完全です。
ファイル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 file2
file2
すべてのパターンを検索し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