使用 sed 在最后一个数字和第一个字母之间添加制表符

使用 sed 在最后一个数字和第一个字母之间添加制表符

我读过很多关于在每个数字和字母之间添加制表符,或在字符串中其他位置添加/删除制表符和空格的非常有用的帖子,但我正在努力使这些解决方案适应我当前的问题,所以我想了想值得添加到堆栈中!我有一堆遗传数据,如下所示:

chr1    1324000 1325000tgagggtctgctg...
chr1    1318000 1319000gggactgcagctg...

ETC。

有没有办法在最后一个数字和第一个字母之间添加制表符?序列的长度不同,因此选项卡并不总是位于相同的位置。此外,第一组数字并不总是以 0 结尾。但是,制表符始终紧接在最后一个数字之后。我认为它会是这样的:

sed -e 's/\([[0-9]\+]\)/[\t/'

但这当然行不通。我如何告诉 sed 在这个位置放置一个制表符?

期望的输出:

chr1    1324000 1325000  tgagggtctgctg...
chr1    1318000 1319000  gggactgcagctg...

答案1

sed -E 's/([0-9])([acgtACGT])/\1\t\2/' file

作品!谢谢赛勒斯。

答案2

$ sed 's/[^0-9]*$/\t&/' file
chr1    1324000 1325000 tgagggtctgctg...
chr1    1318000 1319000 gggactgcagctg...

相关内容