在awk
上,我在space
之后拆分:
或chrxx
(这是不一致的,所以我将两者都添加为FS
,然后在-
上进行拆分。如果后面没有$2
,我似乎无法复制-
。第2,3行是示例。如果在后面有-
数字,那么它右边的值就是输出中的$3
。awk
看起来很近,但是并没有重复该值。谢谢:)。
在
chr17 7124137-7124146 ACADVL
chr1 229568460 ACTA1
chr10 90708637 ACTA2
awk
awk -F"[ :-]" '$3=$3?$3:$2' OFS='\t' in
当前
chr17 7124137 7124146 ACADVL
chr1 229568460 ACTA1
chr10 90708637 ACTA2
所需的输出
chr17 7124137 7124146 ACADVL
chr1 229568460 229568460 ACTA1
chr10 90708637 90708637 ACTA2
答案 0 :(得分:2)
如果字段数为3,则将第3个字段复制到第4个,然后将第2个字段复制到第3个。强制重新计算整个记录,以使输出选项卡分开,无论之前进行过什么操作。
awk -F'[ :-]' 'NF==3{$4=$3;$3=$2} {$1=$1} 1' OFS='\t' in
答案 1 :(得分:0)
$ perl -lane 'if($F[1]=~/\-/){$F[1]=~s/-/ /}else{splice @F, 1, 0, $F[1];}print "@F" ' temp
chr17 7124137 7124146 ACADVL
chr1 229568460 229568460 ACTA1
chr10 90708637 90708637 ACTA2
[netcrk@o2uk1061 infinys_root]$