1

ここに最初に投稿すると、それは awk の質問です。

次のようなファイルがあります。

Motif name class from to strand sequence score
>ENSBTAG00000000436                         
MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33
... (50 similar lines)
>ENSBTAG00000000380                         
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.03
... (57 similar lines)

等々。>ENSBTA 行は一連のレコードの「ラベル」であることに注意してください。だから私が望むのは、 >ENSBTA 行が MA で始まる行のフィールドとして追加されることです...つまり

MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33 >ENSBTAG00000000436

これまでのところ、

awk '{if (NR>1&&NF==1) genename=$1; if (NR>1&&NF>1) print $0, genename}'

これは非常に近いですが、ENST 識別子を正しい行に保持していません。したがって、上記の例を参照すると、ファイルの 2 番目の部分の 57 行すべてが正しい識別子 (ENSBTAG00000000380) を取得するわけではありません。

誰かがこれについて最善の方法を提案してもらえますか?

ありがとう

イアン

4

2 に答える 2

1

テストされていませんが、このようなものはあなたが望むものに近いはずです:

awk '/^>ENSBTAG/{tag=$0;}/^MA/{print $0,tag}'

つまり、行の先頭で「ENSBTAG」と一致する場合は、その行を変数に保存しますが、行の先頭で「MA」と一致する場合は、最新のタグを追加して行を印刷します。

レコード行が常に「^MA」と一致しない場合(例のすべての行が一致しますが、私はそれを想定したくありません)、またはタグが少し異なって見える場合は、それに応じて正規表現。

于 2012-06-07T12:59:18.893 に答える
1

このワンライナーは、次の出力を提供します(テストを参照)。最初の行"Motif name class from to strand sequence score"も印刷されます。

awk '/^>[A-Z]*/{l=$0;next;}{print $0" "l}' file

テスト

kent$  cat a
Motif name class from to strand sequence score
>ENSBTAG00000000436
MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33
MA0080.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.34
MA0082.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.35
>ENSBTAG00000000380
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.03
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.04
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.05

kent$  awk '/^>[A-Z]*/{l=$0;next;}{print $0" "l}' a
Motif name class from to strand sequence score 
MA0079.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.33 >ENSBTAG00000000436
MA0080.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.34 >ENSBTAG00000000436
MA0082.2 SP1 Zinc-coordinating 29 38 - agggggtggg 6.35 >ENSBTAG00000000436
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.03 >ENSBTAG00000000380
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.04 >ENSBTAG00000000380
MA0113.1 NR3C1 Zinc-coordinating 92 109 - ccagaaagtgcttctccc 7.05 >ENSBTAG00000000380
于 2012-06-07T13:11:51.747 に答える