2016-07-28 15 views
2

私は200,000 +行のファイルを持っています。行はグループ化されています。行の各グループの先頭は、「イメージ」で始まり、「HISTO」で始まり、「FRAG」で始まる少なくとも1つ、通常は複数の行から始まります。 私は以下を必要とします:
1. "HISTO"で始まる行を削除します。
2.各 "FRAG"行について、以前の "IMAGE"行と結合する必要があります。 例を示します。親に基づいた行の結合と削除

>IMAGE ...data1... 
>HISTO usually numbers 0 0 1 1 0 1 0 
>FRAG ...data1... 
>FRAG ...data2... 
>IMAGE ...data2... 
>HISTO usually numbers 0 0 1 1 0 1 0 
>FRAG ...data1... 
>FRAG ...data2... 
>FRAG ...data3... 
>FRAG ...data4... 

結果はこのように見える必要があります:

>IMAGE ...data1... FRAG ...data1... 
>IMAGE ...data1... FRAG ...data2... 
>IMAGE ...data2... FRAG ...data1... 
>IMAGE ...data2... FRAG ...data2... 
>IMAGE ...data2... FRAG ...data3... 
>IMAGE ...data2... FRAG ...data4... 

IMAGEラインをオーバー開始する前に、多くのFRAG線を有することが可能です。私はかなり多くのツールを使用できるように私はMacを使用しています。

私はこれを試しましたが、複数のFRAGラインを1つのIMAGEラインに結合しています。

awk '/^IMAGE/{if(NR> 1)print a; = $ 0}/^(FRAG)/ {= A」「$ 0}」INPUT.TXT>

output.txtと、この中で結果は:

IMAGE ... DATA1 .. 。FRAG ... DATA1 ... FRAG ... DATA2 ...

+0

@Inian元のメッセージを編集しました。少なくともそれはHISTOの行を削除しました。しかし、それはすべて1行にするFRAGラインを組み合わせています。 –

答えて

2

これは動作します:

sed 's/>//' Input.txt|awk '/^IMAGE/{a=$0;next;} /^FRAG/{print ">"a,$0}' 

次の文は、それはIMAGEとラインであればFRAGパターンをチェックしないようにすることです、したがって、PRを加速するおとぎ話