公に利用可能なデータベースから.fa
いくつかのフォーマットのシーケンスをダウンロードしました。.csv
シーケンス名と長さをカンマで区切って含むファイルを作成したいと思います。入力ファイルは次のとおりです。
>cel-let-7-5p MIMAT0000001 Caenorhabditis elegans let-7-5p
UGAGGUAGUAGGUUGUAUAGUU
>cel-let-7-3p MIMAT0015091 Caenorhabditis elegans let-7-3p
CUAUGCAAUUUUCUACCUUACC
>cel-lin-4-5p MIMAT0000002 Caenorhabditis elegans lin-4-5p
UCCCUGAGACCUCAAGUGUGA
>cel-lin-4-3p MIMAT0015092 Caenorhabditis elegans lin-4-3p
ACACCUGGGCUCUCCGGGUACC
>cel-miR-1-5p MIMAT0020301 Caenorhabditis elegans miR-1-5p
CAUACUUCCUUACAUGCCCAUA
ヘッダー行の最初の項目を選択して次の行の読み取りサイズを印刷するには、次のコマンドを使用します。
grep -A 1 "^>" file_name.fa | awk '{print($1); getline; print length($0)}'
これが私が得たものです。出力:
>cel-let-7-5p
22
>cel-let-7-3p
22
>cel-lin-4-5p
21
>cel-lin-4-3p
22
>cel-miR-1-5p
22
.csv
しかし、必要な出力ではExcel / R / pythonにエクスポートできるファイルを作成したいと思います。予想出力:
cel-let-7-5p,22
cel-let-7-3p,22
cel-lin-4-5p,21
cel-lin-4-3p,22
cel-miR-1-5p,22
私ができる方法はありますか?オンラインでヘルプが見つかりません。
ベストアンサー1
そしてアッ(使用を避けるgetline()
必ずしも必要ではない場合):
$ awk '
/^>/{sub(/^>/, "");printf "%s,", $1;next} # process lines starting with '>'
{print length()} # other lines
' file_name.fa
出力
cel-let-7-5p,22
cel-let-7-3p,22
cel-lin-4-5p,21
cel-lin-4-3p,22
cel-miR-1-5p,22