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;iawk'{for(i=1;iawk'{for(i=1;i