約500万行のゲノムデータのファイルがあり、A、T、C、Gの文字のみを含める必要があります。問題は、ファイルの大きさはわかっていますが、それより少し大きいということです。つまり、分析で問題が発生したか、ゲノムデータ以外のものを含む行があります。
A、T、C、またはG以外の行を見つける方法はありますか?ファイルの性質上、その他の文字、スペース、数字、記号は含めないでください。私は記号ごとに検索を行ったので、もっと簡単な方法があることを望んでいました。
まず第一に、あなたは間違いなくファイルをエディターで開きたくないでしょう(そのように編集するには大きすぎます)。
代わりに、単にidentifyにしたい場合、ファイルにA
、T
、C
およびG
以外のものが含まれているかどうかあなたはそれを行うかもしれません
grep '[^ATCG]' filename
これにより、これらの4文字以外のものが含まれるすべての行が返されます。
ファイルからこれらの文字を削除したい場合は、次のようにします。
tr -c -d 'ATCG\n' <filename >newfilename
(これがファイルを「修正」する正しい方法であるかどうかはわかりません)
これにより、4つのうちの1つではないファイル内のすべての文字が削除され、改行(\n
)。編集されたファイルはnewfilename
に書き込まれます。
ファイルに何かを追加したのが系統的なエラーである場合、これはsed
またはawk
によって修正される可能性がありますが、データがどのようになっているかはまだわかりません。
ファイルをvi
またはvim
で開いている場合、コマンド
/[^ATCG]
A
、T
、C
、またはG
ではない次の文字を編集バッファーで検索します。
そして:%s/[^ATCG]//g
はそれらをすべて削除します。
タイトルに集中した
ATCG以外のものがあるVIの行を見つけます
そして、これをVIエディター、いわゆる「ラストラインモード」からテストしました。
:%!tr -c -d 'ATCG\n
:
コマンドラインモードに入ります。%
ファイル全体を範囲として一致させます。!
外部コマンドで範囲を絞り込むtr -c -d 'ATCG\n
それはたまたま@Kusalanandaが書いたのと同じです:)。