参照ファイルがあります。
参照文書
Dpse\GA30012 FBgn0000447 chr2 26607738 26607962 -1
Dpse\GA19764 FBgn0085819 chrX 28571020 28571736 -1
Dpse\ttk FBgn0000100 chr2 16553824 16561652 -1
Dpse\GA30195 FBgn0085742 chr3 22629640 22630440 -1
入力ファイル:
文書
FBgn0000447 1 11 HWI-ST1083:68:C0YYUACXX:8:1111:20915:34957 255 -
FBgn0000100 1 11 HWI-ST1083:68:C0YYUACXX:8:1113:9591:98803 255 -
FBgn0085819 1 11 HWI-ST1083:68:C0YYUACXX:8:1204:9035:56108 255 -
FBgn0085742 1 11 HWI-ST1083:68:C0YYUACXX:8:1204:9035:56108 255 -
FBgn0037963 47752 47802 HWI-ST1083:68:C0YYUACXX:8:1215:21263:59372 255 -
FBgn0001257 11527 11577 HWI-ST1083:68:C0YYUACXX:8:1311:2957:12154 255 -
FBgn0034315 158 208 HWI-ST1083:68:C0YYUACXX:8:2113:4139:83177 255 -
FBgn0000559 3316 3365 HWI-ST484:183:C167BACXX:7:1101:1926:2031 255 +
FBgn0262975 39033 39082 HWI-ST484:183:C167BACXX:7:1101:1726:2030 255 +
FBgn0032505 1 50 HWI-ST484:183:C167BACXX:7:1101:5095:2042 255 +
FBgn0005593 403 452 HWI-ST484:183:C167BACXX:7:1101:3906:2209 255 +
FBgn0013686 692 741 HWI-ST484:183:C167BACXX:7:1101:3218:2247 255 -
FBgn0000556 3793 3842 HWI-ST484:183:C167BACXX:7:1101:5288:2041 255 +
FBgn0015521 438 487 HWI-ST484:183:C167BACXX:7:1101:5731:2170 255 -
FBgn0033912 1121 1170 HWI-ST484:183:C167BACXX:7:1101:8602:2063 255 -
最初の列と2番目の列の間に空の列を作成し、次のfile
出力2になりました。
出力2
FBgn0000447 435 485 HWI-ST1083:68:C0YYUACXX:8:1111:20915:34957 255 -
FBgn0000100 704 754 HWI-ST1083:68:C0YYUACXX:8:1113:9591:98803 255 -
FBgn0085819 154 204 HWI-ST1083:68:C0YYUACXX:8:1204:9035:56108 255 -
FBgn0085742 389 439 HWI-ST1083:68:C0YYUACXX:8:1204:9035:56108 255 -
FBgn0037963 47752 47802 HWI-ST1083:68:C0YYUACXX:8:1215:21263:59372 255 -
FBgn0001257 11527 11577 HWI-ST1083:68:C0YYUACXX:8:1311:2957:12154 255 -
FBgn0034315 158 208 HWI-ST1083:68:C0YYUACXX:8:2113:4139:83177 255 -
FBgn0000559 3316 3365 HWI-ST484:183:C167BACXX:7:1101:1926:2031 255 +
FBgn0262975 39033 39082 HWI-ST484:183:C167BACXX:7:1101:1726:2030 255 +
FBgn0032505 1 50 HWI-ST484:183:C167BACXX:7:1101:5095:2042 255 +
FBgn0005593 403 452 HWI-ST484:183:C167BACXX:7:1101:3906:2209 255 +
FBgn0013686 692 741 HWI-ST484:183:C167BACXX:7:1101:3218:2247 255 -
FBgn0000556 3793 3842 HWI-ST484:183:C167BACXX:7:1101:5288:2041 255 +
FBgn0015521 438 487 HWI-ST484:183:C167BACXX:7:1101:5731:2170 255 -
FBgn0033912 1121 1170 HWI-ST484:183:C167BACXX:7:1101:8602:2063 255 -
これは理想的な出力です。
ファイルの列1のすべてのIDについて、列output2
2の対応するIDの列reference file
3を参照する値でファイルの列2を入力します。ファイル列1の各IDの参照ファイル列2の対応するIDについて、出力2ファイル列3は(計算結果)(列3 +参照4 - 1)、列4と同じです。 (列4 +参照4 - 1))と同じです。output2
output2
私は私ですが、目的のcurrent code
出力ファイルを取得できません。
現在のコード
awk -v OFS="\t" '
NR==FNR {a[$2]=$3; b[$2]=$4; next};
{if ($1 in a) $2=a[$1]; print};
{if ($1 in b) $3=b[$1]+$3-1; $4=b[$1]+$4-1; print}
' $ref $output2 > $output3
理想的な出力は次のようになります(最初の4行)。
出力(必須)
FBgn0000447 chr2 26607738 26607748 HWI-ST1083:68:C0YYUACXX:8:1111:20915:34957 255 -
FBgn0000100 chr2 28571020 28571030 HWI-ST1083:68:C0YYUACXX:8:1113:9591:98803 255 -
FBgn0085819 chrX 16553824 16553834 HWI-ST1083:68:C0YYUACXX:8:1204:9035:56108 255 -
FBgn0085742 chr3 22629640 22629650 HWI-ST1083:68:C0YYUACXX:8:1204:9035:56108 255 -
これは、awk配列の数値のいくつかの制限によるものなのか、それとも他のバグによるものなのかはわかりません。助けてくれてありがとう!
reference file
PS:2列のすべてのIDが3/4列に対応する値を持っていないため、問題が記憶されます。だから値を取得できませんoutput2
。この問題をどのように解決するのですか?空白を埋める最良の方法は何ですか?もう一度ありがとう
答え1
スペースを変更せずに「生」入力を使用したことに注意してください。実際には、入力フィールド区切り文字がタブであることを指定していないため、awk は「スペース」をフィールド区切り文字として使用します。したがって、一部を挿入することは重要ではありません。追加タブまたは何か。
awk -v OFS="\t" '
NR == FNR {ref3[$2] = $3; ref4[$2] = $4; next}
$1 in ref3 {
$3 = $3 + ref4[$1] - 1
$2 = ref3[$1] OFS ($2 + ref4[$1] - 1)
print
}
' reference input
FBgn0000447 chr2 26607738 26607748 HWI-ST1083:68:C0YYUACXX:8:1111:20915:34957 255 -
FBgn0000100 chr2 16553824 16553834 HWI-ST1083:68:C0YYUACXX:8:1113:9591:98803 255 -
FBgn0085819 chrX 28571020 28571030 HWI-ST1083:68:C0YYUACXX:8:1204:9035:56108 255 -
FBgn0085742 chr3 22629640 22629650 HWI-ST1083:68:C0YYUACXX:8:1204:9035:56108 255 -