ATCGではなくVIの行を探す

ATCGではなくVIの行を探す

私は、文字A、T、C、Gだけを含める必要がある約500万行の長さのゲノムデータファイルを持っています。問題は、ファイルサイズがどれだけ必要かを知っていますが、それより少し大きいことです。これは、分析に問題が発生したか、一部の行にゲノムデータ以外のコンテンツが含まれていることを意味します。

A、T、C、G以外の行を見つける方法はありますか?ファイルの性質上、他の文字、スペース、数字、記号は表示しないでください。シンボルごとにシンボルを検索したので、より簡単な方法があることを願っています。

答え1

まず、エディタでファイルを開きたくないでしょう(この方法で編集するには大きすぎます)。

逆にただ欲しいなら確認するファイルにA以外の内容が含まれている場合は、次のものを使用できます。TCG

grep '[^ATCG]' filename

これにより、この4文字以外の内容を含むすべての行が返されます。

欲しいなら削除ファイル内のこれらの文字は次のとおりです。

tr -c -d 'ATCG\n' <filename >newfilename

(これがファイルを「修正」する正しい方法であるかどうかはわかりません)

これにより、ファイルからこれらの4文字のうちの1つ以外のすべての文字が削除され、改行文字(\n)も保存されます。編集したファイルはに記録されますnewfilename

ファイルに何かを追加したことがシステムエラーの場合、またはsedを介して修正できますが、awkまだデータがどのように見えるかわかりません。


viファイルを開くvimか、コマンドを実行すると

/[^ATCG]

ATまたはではなく、編集バッファの次の文字がC見つかりますG

そして:%s/[^ATCG]//gすべて削除します。

答え2

タイトルに集中しました。

ATCGではなくVIの行を探す

私はこれを「最後の行モード」と呼ばれるVIエディタでテストしました。

:%!tr -c -d 'ATCG\n

:コマンドラインモードに入り、%ファイル全体を範囲に一致させ、!@Kusalanandaが書いたのと同じ外部コマンドで範囲をフィルタリングします。 :)tr -c -d 'ATCG\n

関連情報