我有以下数据,它们是制表符间隔的,但我发现有些列不是。如何确保数据都是制表符间隔?
这是部分数据:
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