次のようなファイルがあります:
gene ID protein
Solyc06g062540 (Z) PYROPHOSPHATASE 3 (PTHR20889:SF0)
Solyc10g075050 ALBUMIN SUPERFAMILY (PTHR33076:SF11)
Solyc07g061760 SUBFAMILY (PTHR24177:SF35)
ファイルはタブ区切りで、最初の列(遺伝子ID)と2番目の列(タンパク質名)の間にタブがあります。(タンパク質名にはスペースを含めることができますが、タブを含めることはできません。)タンパク質名には括弧で囲まれた文字列が含まれます。例:(PTHR33076:SF11)
これはタンパク質です。ID最初の列は保持し、2 番目の列のタンパク質 ID (およびそれを囲む括弧) 以外のすべてを削除します。出力は次のようになります。
Solyc06g062540 (PTHR20889:SF0)
Solyc10g075050 (PTHR33076:SF11)
Solyc07g061760 (PTHR24177:SF35)
どうすればいいでしょうか? 「マーク」機能を使用して括弧内のすべての ID をマークし、(\w+\d+:\w+\d+)
括弧内のすべての ID を強調表示するように入力しましたが、操作できません。注意として、一部のタンパク質名には括弧内の他の文字列があります (たとえば、タンパク質名(Z)
と必要な ID 値が含まれている最初の行を参照してください)。これらは保持したくありません。
答え1
正規表現の検索と置換でこれを行うことができます。Ctrl+を押してH置換ダイアログを開きます。検索モードが になっていることを確認してくださいRegular Expression
。
検索対象:
(^[^\t\r\n]+\t)[^\t\r\n]+(\(\w+\d+:\w+\d+\))[^\t\r\n]*
と置換する:
\1\2
パターンの説明:
[^\t\r\n]+
タブ、改行、または復帰を含まない任意の文字列です。これは、ファイルの 1 列のテキストのみに一致する必要があります。
^[^\t\r\n]+
^
先頭によって一致が行の先頭に制限されるため、最初の列の内容と一致します。
最初のキャプチャ グループは、(^[^\t\r\n]+\t)
最初のフィールドと次のタブの内容と一致します。
[^\t\r\n]+(\(\w+\d+:\w+\d+\))[^\t\r\n]*
2 番目のフィールドの内容と一致し、括弧内の表現が存在する場合にのみ一致します。
2 番目のキャプチャ グループは(\(\w+\d+:\w+\d+\))
括弧内の式と一致します。
置換パターンは、\1\2
最初のキャプチャ グループと 2 番目のキャプチャ グループを返します。一致のその部分はキャプチャ グループに含まれていないため、これにより 2 番目のフィールドの周囲のテキストが実質的に削除されます。
答え2
\t.*(
(括弧で囲まれた) タンパク質 ID が常に行の最後にある場合 (示されているように)、 (または場合によっては\t[^\r\n]*(
) を検索して に置き換えるだけで十分なはずです\t(
。