我有一个包含5列的输入文件,但我需要将第5列分成两列,因此输出文件总共有6列。
我的输入文件数据如下所示:
chrX 100629986 100630758 - ENSG00000000003.14.IntrontENST00000373020.8.Intron
chrX 100630866 100632484 - ENSG00000000003.14.IntrontENST00000373020.8.Intron
chrX 100632568 100633404 - ENSG00000000003.14.IntrontENST00000373020.8.Intron
您注意到第5列在我的所有数据中都有类似的结构,所以我要做的是让我的第5列包含" ENSG00000000003.14.Intron" 和我的第6列包含" tENST00000373020.8.Intron"
然而,并非所有数据都具有.Intron标记,例如:
chrX 100597503 100597531 + ENSG00000000005.5tENST00000485971.1
但是您会注意到我的所有数据都是" t" ,因此这就是我想用来分隔这些列的内容。我不确定如何为拥有数十万行的数据执行此操作,并且手动执行此操作将花费太长时间。我还需要整个文件以制表符分隔,以便我可以继续进一步处理这些数据。
提前感谢所有人,
答案 0 :(得分:5)
您可以使用sed插入标签:
sed 's/tENST/\t&/' < input > output
每个tENST字符串都被标签+字符串替换。
对于某些sed
版本,您可以尝试使用$'s/tENST/\t&/'
(即添加$
)。
答案 1 :(得分:2)
使用awk,你会写
awk -F"\t" '{sub(/tENST/, FS "tENST", $5); print}' file > output