Bash 拆分行并跳过awk中的空白位置

Bash 拆分行并跳过awk中的空白位置,bash,shell,awk,sed,Bash,Shell,Awk,Sed,我有这样的数据: AA_MAF EA_MAF ExAC_MAF - - - G:0.001445 G:0.0044 - - - - - - C:0.277 C:0.1984 C:0.1874 C:0.176 G:0.9296 G:0.9994 G:0.993&C:8.237e-06 C:0.9287 C:0.9994 C:0.993&T:5.767e-05 我需要将所有列按:和&-这意味着将所有字母(A、C

我有这样的数据:

AA_MAF  EA_MAF  ExAC_MAF
-   -   -
G:0.001445  G:0.0044    -
-   -   -
-   -   C:0.277
C:0.1984    C:0.1874    C:0.176
G:0.9296    G:0.9994    G:0.993&C:8.237e-06
C:0.9287    C:0.9994    C:0.993&T:5.767e-05
我需要将所有列按
&
-这意味着将所有字母(A、C、G、T)与其频率(数字后接字母)分开。这是非常复杂的,我不确定是否有可能解决

要求输出是单独的:

AA_MAF  AA_MAF  EA_MAF  EA_MAF  ExAC_MAF    ExAC_MAF    ExAC_MAF    ExAC_MAF
-       -       -   -   -   -
G   0.001445    G   0.0044  -   -   -   -
-       -       -   -   -   -
-       -       C   0.277   -   -
C   0.1984  C   0.1874  C   0.176   -   -
G   0.9296  G   0.9994  G   0.993   C   8.24E-006
C   0.9287  C   0.9994  C   0.993   T   5.77E-005
如果数组为空,请尝试替换
-

我的尝试是:

awk -v OFS="\t" '{{for(i=1; i<=NF; i++) sub(":","\t",$i)}; sub ("&","\t",$i) 1'}' IN_FILE |  awk 'BEGIN { FS = OFS = "\t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = "-" }1'

awk-v OFS=“\t”{for(i=1;i如果不需要尾部斜杠,可以使用以下命令:

$ awk -F'[ \t:&]+' -v OFS='\t' '{$1=$1}1' file
AA_MAF  EA_MAF  ExAC_MAF
-   -   -
G   0.001445    G   0.0044  -
-   -   -
-   -   C   0.277
C   0.1984  C   0.1874  C   0.176
G   0.9296  G   0.9994  G   0.993   C   8.237e-06
C   0.9287  C   0.9994  C   0.993   T   5.767e-05
如果需要后面的斜杠:

$ awk -F'[ \t:&]+' -v OFS='\t' '{$1=$1;for(i=NF+1;i<=8;i++)$i="-"}1' file
AA_MAF  EA_MAF  ExAC_MAF    -   -   -   -   -
-   -   -   -   -   -   -   -
G   0.001445    G   0.0044  -   -   -   -
-   -   -   -   -   -   -   -
-   -   C   0.277   -   -   -   -
C   0.1984  C   0.1874  C   0.176   -   -
G   0.9296  G   0.9994  G   0.993   C   8.237e-06
C   0.9287  C   0.9994  C   0.993   T   5.767e-05

$awk-F'[\t:&]+'-vofs='\t'{$1=$1;for(i=NF+1;i如果不需要尾部斜杠,可以使用以下命令:

$ awk -F'[ \t:&]+' -v OFS='\t' '{$1=$1}1' file
AA_MAF  EA_MAF  ExAC_MAF
-   -   -
G   0.001445    G   0.0044  -
-   -   -
-   -   C   0.277
C   0.1984  C   0.1874  C   0.176
G   0.9296  G   0.9994  G   0.993   C   8.237e-06
C   0.9287  C   0.9994  C   0.993   T   5.767e-05
如果需要后面的斜杠:

$ awk -F'[ \t:&]+' -v OFS='\t' '{$1=$1;for(i=NF+1;i<=8;i++)$i="-"}1' file
AA_MAF  EA_MAF  ExAC_MAF    -   -   -   -   -
-   -   -   -   -   -   -   -
G   0.001445    G   0.0044  -   -   -   -
-   -   -   -   -   -   -   -
-   -   C   0.277   -   -   -   -
C   0.1984  C   0.1874  C   0.176   -   -
G   0.9296  G   0.9994  G   0.993   C   8.237e-06
C   0.9287  C   0.9994  C   0.993   T   5.767e-05
awk-F'[\t:&]+'-vofs='\t'{$1=$1;for(i=NF+1;i
awk'{for(i=1;i
awk'{for(i=1;i