将选项卡添加到特定列

将选项卡添加到特定列

我有以下数据,它们是制表符间隔的,但我发现有些列不是。如何确保数据都是制表符间隔?

这是部分数据:

rs987435    C   G   1   1   2   1   20
rs345783    C   G   1   1   1   1   01
rs955894    G   T   2   2   2   2   22
rs6088791   A   G   1   0   1   0   22
rs11180435  C   T   1   1   1   1   10
rs17571465  A   T   2   2   2   2   22
rs17011450  C   T   2   2   1   2   22
rs6919430   A   C   2   2   2   2   22
rs2342723   C   T   0   0   0   0   01
rs11992567  C   T   2   2   2   2   22

从第4列开始的列只能是0,1,2;正如你所看到的,第 8 列不是。我需要在这些数字之间添加制表符,在 Linux 中如何做到这一点?

答案1

由于您使用的是 Linux,因此您将拥有 GNU Sed(而不是 BSD Sed),因此您可以简单地执行以下操作:

sed 's/.$/\t&/' file.txt

当对命令行上看到的输出感到满意时,使用以下标志“就地”执行(即将其保存回文件)-i

sed -i 's/.$/\t&/' file.txt

其作用是在每行的最后一个字符之前插入一个制表符。

答案2

用制表符替换所有空格:

tr -s " " "\t" < datafile

相关内容