
遺伝子型データを含むファイルがあります。 2番目の列には、以下のように連結された特定の遺伝的変異の2つの対立遺伝子があります。
rs969931 CA 1.000 2.000 2.000 2.000 2.000 2.000 1.000 1.000
rs2745406 CT 0.000 2.000 2.000 1.000 1.000 2.000 1.000 1.000
rs6939431 AG 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000
rs1233427 AG 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs1233426 AG 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs1233425 GC 1.000 1.999 1.999 2.000 2.000 2.000 1.000 1.000
rs362546 GA 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs909968 AG 0.000 2.000 2.000 1.000 1.000 1.000 1.000 1.000
rs909967 GA 1.000 2.000 2.000 2.000 2.000 2.000 1.000 1.000
rs886381 AG 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000
対立遺伝子を2つの別々の列として使用して新しいファイルを作成する必要があります。つまり、2番目の列を2つの列に分割する必要があります。以下は希望の出力です。これを達成するために、awkで複数のフィールド区切り文字を指定する方法はありますか?
rs969931 C A 1.000 2.000 2.000 2.000 2.000 2.000 1.000 1.000
rs2745406 C T 0.000 2.000 2.000 1.000 1.000 2.000 1.000 1.000
rs6939431 A G 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000
rs1233427 A G 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs1233426 A G 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs1233425 G C 1.000 1.999 1.999 2.000 2.000 2.000 1.000 1.000
rs362546 G A 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs909968 A G 0.000 2.000 2.000 1.000 1.000 1.000 1.000 1.000
rs909967 G A 1.000 2.000 2.000 2.000 2.000 2.000 1.000 1.000
rs886381 A G 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000
答え1
sub
これを行うには、次の機能を使用できますawk
。
awk 'sub(/./,"& ",$2)1;' file
タブ区切りの出力が必要な場合は、次のものを使用できます。
awk -v OFS="\t" 'sub(/./,"&\t",$2)1;' file
またはさまざまな他のツールから:
真珠
perl -alne '$F[1]=~s/./$& /; print "@F"' file
またはタブ区切りの出力の場合:
perl -alne '$F[1]=~s/./$&\t/; print join "\t",@F' file
牛に似た一種の栄養
sed
sed -r 's/\S+\s+\S/& /' file
その他
sed
sed 's/^[[:alnum:]]*[[:blank:]]*./& /' file
シェル
while read -r snp nt rest; do printf "%s\t%s\t%s\t%s\n" "$snp" "${nt:0:1}" "${nt:0:1}" "$rest" done < file
答え2
使用gsub
:awk
awk 'gsub(""," ",$2)1' file
結果:
rs969931 C A 1.000 2.000 2.000 2.000 2.000 2.000 1.000 1.000
rs2745406 C T 0.000 2.000 2.000 1.000 1.000 2.000 1.000 1.000
rs6939431 A G 0.000 0.000 0.000 0.000 0.000 0.000 1.000 0.000
rs1233427 A G 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs1233426 A G 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs1233425 G C 1.000 1.999 1.999 2.000 2.000 2.000 1.000 1.000
rs362546 G A 1.000 2.000 2.000 2.000 2.000 1.000 1.000 1.000
rs909968 A G 0.000 2.000 2.000 1.000 1.000 1.000 1.000 1.000
rs909967 G A 1.000 2.000 2.000 2.000 2.000 2.000 1.000 1.000
rs886381 A G 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.000