空の行とその上の行を削除します。

空の行とその上の行を削除します。

何百万ものDNA配列を含む大容量の.fnaファイルがあります。プライマーを切断した後、いくつかの書き込みエラーのためにいくつかのシーケンスヘッダーが残り、その後にシーケンスがありません。以下に例を示します。ワークフロースクリプトを引き続き使用できるように、これらのヘッダーと空白行を削除する必要があります。

B2S312_20116609 HWI-ST1128:217:D2HB4ACXX:8:1101:20814:45721 orig_bc=CCGCATAA new_bc=CCGCATAA bc_diffs=0
AACCATGCACCACCTGTATCTGTGTCTAACCAAAGGTCAGAACAACACAATCTCTTGTGTCCTCACAGTATGTCAAGACTT

B4S315_20116610 HWI-ST1128:217:D2HB4ACXX:8:1101:20948:45746 orig_bc=ATATGCCG new_bc=ATATGCCG bc_diffs=0
AACCATGCACCACCTGCACACGACCAACTAAATGCCACCACATCTCTGCAGTGTCGCCGTGCATGTCAAGCCTT

A3C214_20116611 HWI-ST1128:217:D2HB4ACXX:8:1101:20874:45747 orig_bc=GATCCAAC new_bc=GATCCAAC bc_diffs=0

A2C214_20116612 HWI-ST1128:217:D2HB4ACXX:8:1101:21248:45534 orig_bc=CCTAGGAT new_bc=CCTAGGAT bc_diffs=0
AACCGTGCACCACCTGTTTTCTGGCTTCCGAAGAAGAGGAACTATCTCTAGTTCTGTCCATCAATGTCAAGACCT

A3C214_20116611 HWI-ST1128:217:D2HB4ACXX:8:1101:20874:45747 orig_bc=GATCCAAC new_bc=GATCCAAC bc_diffs=0したがって、この例では、その行とその下の空の行を削除したいと思います。

sedだけを使用して空の行を削除しましたが、私のシナリオに適した例が見つかりませんでした。

ベストアンサー1

sed '$!N;/:.*\n$/d;P;D' <infile

上記のコマンドは、N最後の行ではなくすべての行から追加の行を取得します。コロンが見つかり、最後の文字が改行されたパターン空間を見つけた場合、バッチは削除されます。つまり、コロンを含む行と次の行が空の場合、両方が削除されます。他のすべての場合は、パターンスペースに最初に表示されるewlineまで印刷し、残りの部分から始める前に同じ内容を削除します。これにより、ファイル全体で1行のプレビューを実行できます。!$:\nP\nD

おすすめ記事