差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
2022awk7回答例 [2022/05/23 08:21] – 作成 suikou | 2022awk7回答例 [2022/05/23 08:54] (現在) – [より簡潔な回答例:] suikou | ||
---|---|---|---|
行 24: | 行 24: | ||
} | } | ||
{ | { | ||
- | length(ARGV) | ||
if(FILENAME==ARGV[1]){ | if(FILENAME==ARGV[1]){ | ||
if(FNR%2==0){ | if(FNR%2==0){ | ||
行 60: | 行 59: | ||
} | } | ||
}' sample1.fasta | }' sample1.fasta | ||
+ | ``` | ||
+ | |||
+ | |||
+ | ### より簡潔な回答例: | ||
+ | |||
+ | ``` | ||
+ | awk -F' | ||
+ | BEGIN{ | ||
+ | ORS=""; | ||
+ | } | ||
+ | { | ||
+ | for(i=1; | ||
+ | if(FILENAME==ARGV[i]){ | ||
+ | if(FNR%2==0){ | ||
+ | data[i][$0]=data[i][$0]+1; | ||
+ | seq[$0]=1; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | END{ | ||
+ | # | ||
+ | print " | ||
+ | for(j=1; | ||
+ | print " | ||
+ | } | ||
+ | print " | ||
+ | # | ||
+ | for(i in seq){ | ||
+ | print i; | ||
+ | for(j=1; | ||
+ | print " | ||
+ | } | ||
+ | print " | ||
+ | } | ||
+ | }' sample*.fasta | ||
+ | ``` | ||
+ | |||
+ | ### より簡潔な回答例2: | ||
+ | |||
+ | ``` | ||
+ | awk -F' | ||
+ | BEGIN{ | ||
+ | ORS=""; | ||
+ | } | ||
+ | { | ||
+ | if(FNR%2==0){ | ||
+ | data[FILENAME][$0]=data[FILENAME][$0]+1; | ||
+ | seq[$0]=1; | ||
+ | } | ||
+ | } | ||
+ | END{ | ||
+ | # | ||
+ | print " | ||
+ | for(j=1; | ||
+ | print " | ||
+ | } | ||
+ | print " | ||
+ | # | ||
+ | for(i in seq){ | ||
+ | print i; | ||
+ | for(j=1; | ||
+ | print " | ||
+ | } | ||
+ | print " | ||
+ | } | ||
+ | }' sample*.fasta | ||
+ | ``` | ||
+ | |||
+ | ### 4.連結した一覧表の各サンプル当たりのリード数が1万になるように標準化せよ | ||
+ | ### 5.補正されたリード数の平均値が多い順にテーブルをソートせよ。 | ||
+ | |||
+ | ### 回答例 | ||
+ | |||
+ | ``` | ||
+ | awk -F' | ||
+ | BEGIN{ | ||
+ | ORS=""; | ||
+ | } | ||
+ | { | ||
+ | if(FNR%2==0){ | ||
+ | data[FILENAME][$0]=data[FILENAME][$0]+1; | ||
+ | seq[$0]=1; | ||
+ | } | ||
+ | } | ||
+ | END{ | ||
+ | # | ||
+ | for(j=1; | ||
+ | for(i in data[ARGV[j]]){ | ||
+ | total[j]=total[j]+data[ARGV[j]][i]; | ||
+ | } | ||
+ | } | ||
+ | # | ||
+ | for(j=1; | ||
+ | for(i in data[ARGV[j]]){ | ||
+ | data[ARGV[j]][i]=data[ARGV[j]][i]*10000/ | ||
+ | # | ||
+ | cnt[i]=cnt[i]+data[ARGV[j]][i]; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | # | ||
+ | print " | ||
+ | for(j=1; | ||
+ | print " | ||
+ | } | ||
+ | print " | ||
+ | # | ||
+ | PROCINFO[" | ||
+ | for(i in cnt){ | ||
+ | print i; | ||
+ | for(j=1; | ||
+ | print " | ||
+ | } | ||
+ | print " | ||
+ | } | ||
+ | }' sample*.fasta | ||
``` | ``` |