如何在文本文件中将一列分成两个制表符分隔的列
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
我有一个包含 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