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

How to separate a column into two tab delimited columns in a text file

我有一个包含 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",因此这就是我想用来分隔这些列的内容。我不确定如何为具有数十万行的数据执行此操作,并且手动执行此操作会花费太长时间。我还需要用制表符分隔整个文件,以便我可以继续进一步处理这些数据。

提前感谢大家,

您可以使用 sed 插入制表符:

sed 's/tENST/\t&/' < input > output

每个 tENST 字符串都替换为制表符 + 字符串。

对于某些 sed 版本,您可以尝试使用 $'s/tENST/\t&/'(即在前面加上 $)。

使用awk,你会写

awk -F"\t" '{sub(/tENST/, FS "tENST", ); print}' file > output