如何将列分隔为文本文件中的两个制表符分隔列

Sys*_*tem 1 awk sed multiple-columns

我有一个包含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
Run Code Online (Sandbox Code Playgroud)

你注意到第5列在我的所有数据中都有类似的结构,所以我想做的是让我的第5列包含"ENSG00000000003.14.Intron",我的第6列包含"tENST00000373020.8.Intron"

然而,并非我的所有数据都具有.Intron标记,例如:

chrX    100597503   100597531   +   ENSG00000000005.5tENST00000485971.1
Run Code Online (Sandbox Code Playgroud)

但是你会注意到我的所有数据都是"t",因此我想用它来分离这些列.我不确定如何为具有数十万行的数据执行此操作,并且手动执行此操作将花费太长时间.我还需要整个文件以制表符分隔,以便我可以继续进一步处理这些数据.

感谢大家提前,

cho*_*oba 5

您可以使用sed插入选项卡:

sed 's/tENST/\t&/' < input > output
Run Code Online (Sandbox Code Playgroud)

每个tENST字符串都被tab +字符串替换.

对于某些sed版本,您可以尝试$'s/tENST/\t&/'改为(即前置一个$).