unix:ファイルから文字10〜80をインポートする

unix:ファイルから文字10〜80をインポートする

行で区切られたテキストを含むファイルがあります。

GCAACACGGTGGGAGCACGTCAACAAGGAGTAATTCTTCAAGACCGTTCCAAAAACAGCATGCAAGAGCG
GTCGAGCCTAGTCCATCAGCAAATGCCGTTTCCAGCAATGCAAAGAGAACGGGAAGGTATCAGTTCACCG
GTGACTGCCATTACTGTGGACAAAAAGGGCACATGAAGAGAGACTGTGACAAGCTAAAGGCAGATGTAGC

ここから10から80までの文字を抽出したいです。

TGGGAGCACGTCAACAAGGAGTAATTCTTCAAGACCGTTCCAAAAACAGCATGCAAGAGCG
GTCGAGCCT

ファイルの文字数を計算する方法を見つけました。

  wc -m file

1行に文字数を取得する方法は次のとおりです。

 awk '{print substr($0,2,6)}' file

しかし、10から80までの文字を取得する方法が見つかりません。

改行文字は文字とは見なされません。

どんなアイデアがありますか?

はい、これは完全なゲノムのDNAです。私は以下を使用して、異なる足場(この場合は10と11)を含むfastaファイルからこのDNAを抽出しました。

 awk '/scaffold_10\>/{p=1;next} /scaffold_11/{p=0;exit} p'

最終的には、指定された足場から100〜800文字(または同様の文字)を取得する簡単なコマンドが必要です。

編集:質問はここに続きます。bashスクリプトの代わりにgff2fastaを使用して全ゲノムから部分DNA配列を取得する

ベストアンサー1

$ cat file1
GCAACACGGTGGGAGCACGTCAACAAGGAGTAATTCTTCAAGACCGTTCCAAAAACAGCATGCAAGAGCG
GTCGAGCCTAGTCCATCAGCAAATGCCGTTTCCAGCAATGCAAAGAGAACGGGAAGGTATCAGTTCACCG
GTGACTGCCATTACTGTGGACAAAAAGGGCACATGAAGAGAGACTGTGACAAGCTAAAGGCAGATGTAGC

各行の長さを確認してください。

$ awk '{print length,$0}' file1
70 GCAACACGGTGGGAGCACGTCAACAAGGAGTAATTCTTCAAGACCGTTCCAAAAACAGCATGCAAGAGCG
70 GTCGAGCCTAGTCCATCAGCAAATGCCGTTTCCAGCAATGCAAAGAGAACGGGAAGGTATCAGTTCACCG
70 GTGACTGCCATTACTGTGGACAAAAAGGGCACATGAAGAGAGACTGTGACAAGCTAAAGGCAGATGTAGC

10〜80文字を印刷してください。

$ awk '{print substr($0,10,70)}' RS= file1
TGGGAGCACGTCAACAAGGAGTAATTCTTCAAGACCGTTCCAAAAACAGCATGCAAGAGCG
GTCGAGCC

入力に空白行が含まれていないと仮定します(RS=有効短絡モードここで、各レコードは段落です(段落は一連の空行で区切られています)。これは、ファイル全体がメモリにロードされることを意味します。

おすすめ記事